次の方法で共有


Azure Front Door WebSocket(AzureフロントドアのWebSocket機能)

適用対象: ✔️ Front Door Standard ✔️ Front Door Premium

Azure Front Door では、追加の構成を必要とせずに、Standard レベルと Premium レベルの両方で WebSocket をサポートしています。 RFC6455 で標準化された WebSocket は、長時間に及ぶ TCP 接続上でサーバーとクライアント間の全二重通信を容易にする TCP ベースのプロトコルです。 HTTP でポーリングする必要がなくなり、HTTP のオーバーヘッドの一部が回避されます。 複数の要求または応答で同じ TCP 接続を再利用できるため、リソースをより効率的に使用できます。 これにより、よりインタラクティブでリアルタイムのシナリオが可能になります。

WebSocket は、チャット アプリ、ダッシュボード、財務更新、GPS、オンライン教育、ライブ ストリーミング、ゲームなど、リアルタイムの更新や継続的なデータ ストリームを必要とするアプリケーションに最適です。 たとえば、取引 Web サイトで WebSocket を使用して、価格データをリアルタイムでプッシュおよび更新できます。

Azure Front Door で WebSocket を使用する

Azure Front Door で WebSocket を使用する場合は、次の点を考慮してください:

  • 接続が WebSocket にアップグレードされると、Azure Front Door は、確立された接続中に検査や操作を行うことなく、クライアントと配信元サーバーの間でデータを送信します。
  • Web アプリケーション ファイアウォール (WAF) 検査は、WebSocket の確立フェーズ中に適用されます。 接続が確立された後、WAF はそれ以上の検査を実行しません。
  • 配信元への正常性プローブは、HTTP プロトコルを使用して実行されます。
  • WebSocket ルートのキャッシュを無効にします。 キャッシュが有効になっているルートの場合、Azure Front Door は WebSocket Upgrade ヘッダーを配信元に転送せず、キャッシュ規則を無視して HTTP 要求として扱います。 これにより、WebSocket のアップグレード要求が失敗します。
  • アイドル タイムアウトは 5 分です。 過去 5 分以内に Azure Front Door が配信元またはクライアントからのデータ転送を検出しなかった場合、接続はアイドル状態と見なされ、閉じられます。
  • 現時点では、Azure Front Door 上の WebSocket 接続が開いているのは、4 時間までです。 基になるサーバーのアップグレードまたはその他のメンテナンス アクティビティにより、WebSocket 接続が切断されることがあります。 アプリケーションに再試行ロジックを実装することを強くお勧めします。
  • 現在、各 Azure Front Door プロファイルでは、最大 3,000 の同時グローバル接続がサポートされています。 詳細については、 Azure Front Door Standard および Premium サービスの制限に関するページを参照してください

WebSocket プロトコルのしくみ

WebSocket プロトコルでは、標準の WebSocket 接続にはポート 80、TLS/SSL 経由の WebSocket 接続にはポート 443 が使用されます。 ステートフル プロトコルとして、クライアントとサーバー間の接続は、どちらかのパーティによって終了されるまでアクティブなままです。 WebSocket 接続は、ws: または wss: スキームを使用した HTTP アップグレード要求として開始されます。 これらの接続は、要求ヘッダーの例に示すように、Connection: UpgradeUpgrade: websocketSec-WebSocket-Key、および Sec-WebSocket-Version ヘッダーを使用して HTTP 要求/応答をアップグレードすることによって確立されます。

クライアントからのハンドシェイクは次のようになります:

    GET /chat HTTP/1.1
    Host: server.example.com
    Upgrade: websocket
    Connection: Upgrade
    Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==
    Origin: http://example.com
    Sec-WebSocket-Protocol: chat, superchat
    Sec-WebSocket-Version: 13

サーバーは 101 Switching Protocols 状態コードで応答し、クライアントから要求されたとおりに WebSocket プロトコルに切り替えることを示します。 応答には、プロトコルの切り替えを確認する Connection: Upgrade および Upgrade: websocket ヘッダーが含まれます。 接続が正常にアップグレードされたことを検証するために、 Sec-WebSocket-Accept ヘッダーが返されます。

サーバーからのハンドシェイクは次のようになります:

    HTTP/1.1 101 Switching Protocols
    Upgrade: websocket
    Connection: Upgrade
    Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=
    Sec-WebSocket-Protocol: chat

クライアントがサーバーの応答を受信すると、WebSocket 接続が開き、データの送信が開始されます。 WebSocket 接続がクライアントまたはサーバーによって切断された場合、またはネットワークの中断によって切断された場合、クライアント アプリケーションはサーバーとの接続を再開することが期待されます。

次のステップ