低遅延のアプリケーションは、HTTPが提供できるものよりも高速な通信手段を必要とする。 例としては、適切なユーザー体験を提供するためにリアルタイムでインタラクティブなコミュニケーションが必要なマルチプレイヤーオンラインゲームやチャットアプリケーションがある。 WebSocketsは、クライアントとサーバ間のオープンで継続的な双方向接続を可能にするリアルタイム通信プロトコルである。 これにより、クライアントが要求しなくてもデータをクライアント(つまりブラウザ)に送信できる。 HTTPプロトコルでは、サーバはクライアントが要求を送信したときにのみ応答する。
金融機関もWebSocketsのもう一つのユースケースである。 最近では、北米の大手銀行とWebSocketプロトコルを使用して、取引が行われるたびにクライアントのポーリングなしでリアルタイム通知を送信するためのオリジンサーバーのオープン接続を確立した。
WebSocketプロトコルはどのように機能するか?
WebSocket接続は通常のHTTP接続として開始される。 WebSocket接続を確立するには、クライアントとサーバーは最初のハンドシェイクの間にHTTPプロトコルからWebSocketプロトコルにアップグレードする(このプロトコルスイッチはWebSocketハンドシェイクとして知られている)。 このアップグレードを開始するには、クライアントは次のヘッダーを使用してサーバに要求を送信する。
-
Connection: Upgrade–クライアントがプロトコルを変更することを示す
-
Upgrade: WebSocket–要求されたプロトコルが「WebSocket」であることを示す
サーバがWebSocketプロトコルを理解し、スイッチに同意すると、同じ2つのヘッダを持つ特別な応答コード101(スイッチングプロトコル)を返す。 その時点で、HTTP接続は同じ基盤となるTCP/IP接続上のWebSocket接続に置き換えられる。 いったん確立されると、WebSocketデータフレームは、一方の側が接続を閉じるまで全二重モードでクライアントとサーバの間を行き来することができる。
HTTPを介したWebSocketsの主な利点は次のとおりである。
-
持続的接続:クライアントが頻繁に新しいデータをチェックする接続を再起動する必要がない。
-
低レイテンシ: WebSocketは最小限のオーバーヘッドを使用する。 継続的な接続が存在するため、ヘッダやその他の情報などのHTTP要求に関連する通常のオーバーヘッドを送信する必要がなくなり、遅延が減少する。
-
全二重通信:WebSocketはサーバとクライアントの間の双方向通信を提供し、双方が同時に通信してデータを交換できるようにする。 Edgecast、現在Edgioは、世界中の配信ネットワーク全体でWebSocketプロトコルのサポートを提供できることを喜ばしく思っている。 IoTとエッジコンピューティングの時代に移行するにつれて、WebSocketプロトコルは、エッジで低遅延アプリケーションを提供したい企業に利益をもたらすだろう。