翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
ディストリビューション WebSockets での CloudFront の使用
Amazon は WebSocket、クライアントとサーバー間の存続期間の長い双方向接続が必要な場合に便利な TCP ベースのプロトコルである の使用 CloudFront をサポートしています。永続的な接続は、多くの場合、リアルタイムアプリケーションでの要件です。使用するシナリオ WebSockets には、ソーシャルチャットプラットフォーム、オンラインコラボレーションワークスペース、マルチプレイヤーゲーム、金融取引プラットフォームなどのリアルタイムのデータフィードを提供するサービスなどがあります。 WebSocket 接続上のデータは、全二重通信では両方向に流れる可能性があります。
CloudFront は WebSocket 、追加の設定を必要とせずに、接続をグローバルにサポートします。クライアントとサーバーの両方が WebSocket プロトコルをサポートしている限り、すべての CloudFront ディストリビューションにはプロトコルサポートが組み込まれています。
WebSocket プロトコルの仕組み
WebSocket プロトコルは、HTTP のオーバーヘッドやレイテンシーの増加を回避する、独立した TCP ベースのプロトコルです。
WebSocket 接続を確立するために、クライアントは HTTP のアップグレードセマンティクスを使用してプロトコルを変更する通常の HTTP リクエストを送信します。その後、サーバーはハンドシェイクを完了できます。 WebSocket 接続は開いたままで、クライアントまたはサーバーは毎回新しい接続を確立する必要なく、互いにデータフレームを送信できます。
デフォルトでは、 WebSocket プロトコルは通常の WebSocket 接続にはポート 80 を使用し、TLS/SSL 経由 WebSocket の接続にはポート 443 を使用します。と CloudFront ビューワープロトコルポリシー に選択したオプションは、 WebSocket接続および HTTP トラフィックプロトコル (カスタムオリジンのみ)に適用されます。
WebSocket の要件
WebSocket リクエストは、次の標準形式で RFC 6455
サンプルクライアントリクエスト:
GET /chat HTTP/1.1 Host: server.example.com Upgrade: websocket Connection: Upgrade Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ== Origin: https://example.com Sec-WebSocket-Protocol: chat, superchat Sec-WebSocket-Version: 13
サンプルサーバー応答:
HTTP/1.1 101 Switching Protocols Upgrade: websocket Connection: Upgrade Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo= Sec-WebSocket-Protocol: chat
クライアントまたはサーバー、またはネットワークの中断によって WebSocket 接続が切断された場合、クライアントアプリケーションはサーバーとの接続を再開する必要があります。
推奨される設定
を使用する際に予期しない圧縮関連の問題を回避するには WebSockets、オリジンリクエストポリシーに次のヘッダーを含めることをお勧めします。
-
Sec-WebSocket-Key
-
Sec-WebSocket-Version
-
Sec-WebSocket-Protocol
-
Sec-WebSocket-Accept
-
Sec-WebSocket-Extensions