ディストリビューション WebSockets での CloudFront の使用 - Amazon CloudFront

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

ディストリビューション 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