ポーリング
基本的に、ポーリングは、定期的にサーバーに情報を要求する手法です。この接続は、HTTPプロトコルに従って行われます。ポーリングには2つのタイプがあります。
- 短いポーリング
- ロングポーリング
短いポーリング
短いポーリングでは、クライアントはサーバーに情報を要求します。サーバーはリクエストを処理します。リクエストにデータが利用できる場合、サーバーは必要な情報を使用してリクエストに応答します。ただし、サーバーにクライアントで使用可能なデータがない場合、サーバーは空の応答を返します。どちらの場合も、応答を返した後、接続は閉じられます。サーバーが空の応答を送信した後でも、クライアントは新しい要求を発行し続けます。このメカニズムにより、サーバーのネットワークコストが増加します。
長いポーリング
長いポーリングでは、クライアントはサーバーがすぐに応答しない可能性があることを期待して、サーバーに情報を要求できます。サーバーがリクエストを受信したときに、クライアントの新しいデータがない場合、サーバーは空のレスポンスを返すのではなく、リクエストを開いたままにして、データが到着するのを待ちます。サーバーは新しいデータを受信すると、すぐにクライアントに応答を配信し、オープンリクエストを完了します。クライアントは、サーバーから回答を取得した後、新しい更新の別の要求を送信できます。長いポーリングは、空の応答の数を減らすことによってコストを削減します。
WebSocket
WebSocketは、単一のTCP接続を介して双方向(双方向)の通信チャネルを提供するプロトコルです。Websocketは、クライアントとサーバー間の永続的な接続を容易にし、両方の当事者がいつでもデータの転送を開始できるようにします。WebSocketハンドシェイクは、クライアントがWebSocket接続を作成するための手順です。操作が成功すると、サーバーとクライアントはいつでもデータを送受信できます。主にWhatsApp、UberなどのリアルタイムWebアプリケーションで使用されます。
サーバー送信イベント(SSE)
WebSocketとは異なり、SSEは一方向接続であるため、SSEを使用してクライアントからサーバーにリクエストを発行することはできません。サーバーからクライアントへの「ほぼリアルタイム」の送信が必要な場合、またはサーバーがループでデータを生成する場合は、SSEが理想的な選択肢です。
彗星
Cometは、ネイティブHTTPメソッドを使用したサーバーとWebブラウザー間の継続的な双方向の対話を記述するWebアプリケーション設計パラダイムです。コメットは総称です。Ajaxプッシュ、HTTPストリーミング、およびHTTPサーバープッシュは、このイベント駆動型の対話を提供するために使用できるHTTPメカニズムの一部です。