ロングポーリング、Websocket、サーバー送信イベント(SSE)、Cometとは何ですか?質問する

ロングポーリング、Websocket、サーバー送信イベント(SSE)、Cometとは何ですか?質問する

いくつかの記事を読んでみましたが、まだ概念がよくわかりません。

誰かこれらのテクノロジーが何であるかを私に説明してみませんか:

  1. ロングポーリング
  2. サーバー送信イベント
  3. ウェブソケット
  4. 彗星

私が毎回遭遇したことの 1 つは、サーバーが接続を開いたままにして、データをクライアントにプッシュするということでした。接続はどのように開いたままにされ、クライアントはプッシュされたデータをどのように取得するのでしょうか? (クライアントはデータをどのように使用するのでしょうか。コードが役立つかもしれません)

さて、リアルタイム アプリにはどれを使用すればよいでしょうか。Websocket (socket.io [node.js ライブラリ] を使用) についてはよく耳にしますが、なぜ PHP ではないのでしょうか。

ベストアンサー1

以下の例では、クライアントはブラウザであり、サーバーは Web サイトをホストする Web サーバーです。

これらのテクノロジーを理解する前に、まず従来のHTTP Web トラフィックを理解する必要があります。

通常のHTTP:

  1. クライアントはサーバーに Web ページを要求します。
  2. サーバーは応答を計算する
  3. サーバーはクライアントに応答を送信します。

ウェブ

Ajax ポーリング:

  1. クライアントは通常の HTTP (上記の HTTP を参照) を使用してサーバーに Web ページを要求します。
  2. クライアントは要求された Web ページを受信し、一定の間隔 (例: 0.5 秒) でサーバーからファイルを要求するページ上の JavaScript を実行します。
  3. サーバーは、通常の HTTP トラフィックと同様に、各応答を計算して返します。

Ajax ポーリング

Ajax ロングポーリング:

  1. クライアントは通常の HTTP (上記の HTTP を参照) を使用してサーバーに Web ページを要求します。
  2. クライアントは要求された Web ページを受信し、サーバーからファイルを要求するページ上の JavaScript を実行します。
  3. サーバーは要求された情報にすぐに応答せず、新しい情報が利用可能になるまで待機します。
  4. 新しい情報が利用可能になると、サーバーは新しい情報で応答します。
  5. クライアントは新しい情報を受信し、すぐに別の要求をサーバーに送信して、プロセスを再開します。

Ajax ロングポーリング

HTML5 サーバー送信イベント (SSE) / イベントソース:

  1. クライアントは通常の HTTP (上記の HTTP を参照) を使用してサーバーに Web ページを要求します。
  2. クライアントは要求された Web ページを受信し、そのページ上で JavaScript を実行してサーバーへの接続を開きます。
  3. 新しい情報が利用可能になると、サーバーはクライアントにイベントを送信します。

    • サーバーからクライアントへのリアルタイムトラフィック、これが主に必要となるものです
    • イベントループを備えたサーバーを使用することをお勧めします
    • 他のドメインのサーバーとの接続は、正しいCORS設定で
    • さらに詳しく読みたい場合は、次の記事が非常に役立ちます:(記事)(記事)(記事)(チュートリアル)

HTML5 の

HTML5 ウェブソケット:

  1. クライアントは通常の http (上記の HTTP を参照) を使用してサーバーに Web ページを要求します。
  2. クライアントは要求された Web ページを受信し、そのページ上で JavaScript を実行してサーバーとの接続を開きます。
  3. サーバーとクライアントは、新しいデータ(どちらか一方)が利用可能になったときに、互いにメッセージを送信できるようになりました。

    • サーバーからクライアントへ、クライアントからサーバーへのリアルタイムトラフィック
    • イベントループを備えたサーバーを使用することをお勧めします
    • WebSocket を使用すると、別のドメインのサーバーに接続できます。
    • サードパーティがホストするWebSocketサーバーを使用することもできます。たとえば、プッシャーまたはその他この方法では、クライアント側のみを実装すればよく、非常に簡単です。
    • さらに詳しく読みたい場合は、これらが非常に役立つと思います:(記事)、(記事)チュートリアル)。

HTML5 Webソケット

彗星:

Cometは、ストリーミングとロングポーリングを使用してリアルタイムアプリケーションを実現するHTML5以前の技術の集合体です。詳しくはウィキペディアまたはこれ記事。


さて、リアルタイム アプリ (コーディングが必要) にはどれを使用すればよいでしょうか。Websocket (socket.io [node.js ライブラリ] を使用) についてはよく耳にしますが、なぜ PHP ではないのでしょうか。

PHPをWebSocketで使うことができます。ラチェット

おすすめ記事