Facebook、Google plus、またはその他の情報Webサイトは、どのようにしてストリームから情報を絶えず取得していますか?非同期リカバリがあると思いますが、彼はどのようにして絶えず取得しますか?無限ループみたい?
どのテクノロジーが使用されていますか?
Facebook、Google plus、またはその他の情報Webサイトは、どのようにしてストリームから情報を絶えず取得していますか?非同期リカバリがあると思いますが、彼はどのようにして絶えず取得しますか?無限ループみたい?
どのテクノロジーが使用されていますか?
Web上でほぼリアルタイムで更新を表示するためのいくつかの異なるアプローチがあります。最も一般的なもののいくつかを次に示します。
この問題への最も簡単なアプローチは、サーバーを短い間隔で継続的にポーリングすることです(そのため名前が付けられています)。これは、数秒ごとに、クライアント側のコードが非同期要求をサーバーに送信し、結果を表示することを意味します。このアプローチの欠点は、サーバーが照会されるよりも更新の頻度が低い場合、クライアントはわずかな見返りで多くの作業を行っていることです。また、ポーリングの頻度に基づいて、サーバーでイベントが発生してからクライアントがイベントを受信するまでにわずかな遅延が発生する場合があります。
ショートポーリングからの次の進化のステップは、ロングポーリングと呼ばれるものです。この場合、クライアント側のJavaScriptは、ページが読み込まれるとすぐにサーバーへの非同期リクエストを起動します。サーバーは、更新が行われたときにのみ要求に応答し、応答がクライアントに到達すると、別の要求がすぐに実行されます。このアプローチの重要な部分は、非同期要求がサーバーを長時間待機できることです。
サーバーに何か変更があった場合にのみ応答が処理されるため、ポーリングを長くすると、帯域幅と計算時間が節約されます。より複雑なサーバー側のロジックが必要ですが、クライアント側でほぼ瞬時に更新できます。
この質問にはまともなサンプルがあります。基本的な「ロングポーリング」を実装するにはどうすればよいですか?
WebSocketは比較的新しいテクノロジーであり、標準のネットワークソケットと同様の方法で双方向通信を可能にします。サーバーまたはクライアントは、接続の反対側でイベントをトリガーするメッセージをソケットを介して送信できます。これは素晴らしいことですが、ブラウザのサポートは、信頼できるソリューションにするほど広く普及していません。
現在のWebSocket仕様については、RFC6455を参照してください。