WebSocket の使用

このトピックでは、Apigee ハイブリッドで WebSocket を使用する方法について説明します。

はじめに

ゲーム、通信、金融取引、その他の高スループット アクティビティなど、ウェブの操作をリアルタイムで行う必要がある状況は数多くあります。

WebSocket は、単一の TCP 接続を介してウェブ クライアントとウェブサーバー間の全二重の通信チャネルを提供するプロトコルです。WebSocket プロトコルは HTTP プロトコルを使用して、クライアントとサーバー間の接続を確立します。接続が確立されると、クライアントとサーバーは WebSocket プロトコルを使用してデータの送受信を行います。

WebSocket の仕様とプロトコルは、W3C によって管理されています。

Apigee ハイブリッドでの WebSocket のサポート

Apigee ハイブリッドでは、仮想ホストは API プロキシが公開されている 1 つまたは複数のドメインを定義します。ハイブリッド仮想ホストは、HTTP プロトコルと WS プロトコルの両方をネイティブにサポートしています。WebSocket を使用するために、特別な仮想ホストやいかなる特別な構成も作成する必要はありません。むしろ、クライアントは Upgrade リクエスト ヘッダーを含めることで、HTTP から WS へのプロトコル アップグレードをリクエストする必要があります。API プロキシ エンドポイントへのアップグレード リクエストは、101 Switching Protocols レスポンスを返します。さらなるリクエストとレスポンスは、開いている WebSocket 接続上で、それが閉じられるまで、双方向で行われます。

ポリシーのサポート

WebSocket 接続では、API プロキシで Verify API Key ポリシーと OAuthV2 ポリシーのみを使用できます。その他のポリシーはすべて無視されます。

接続の取り消し

WebSocket 接続は、次のときに閉じられます。

  • プロキシ エンドポイントが API キーまたは OAuth トークンなしでリクエストを受信する。
  • プロキシ エンドポイントが、期限切れまたは無効な API キーまたは OAuth トークンを含むリクエストを受信する。
  • WebSocket 接続がタイムアウトする。

トレースと分析の使用

Trace ツールでは、次のスクリーンショットに示すように、各 WebSockets 接続に対して 1 つのリクエストが 101 ステータスで表示されます。

ハイブリッド分析ダッシュボードで、WebSocket セッションごとにカウントされたトラフィックが表示されます。セッション中に発生した不安定なトラフィックは、ダッシュボードに表示されません。

WebSocket アプリケーションのサンプル

詳細については、GitHub で稼働している websocket-sample アプリケーションをご覧ください。このサンプルでは、WebSocket 接続経由で API プロキシを呼び出す方法を示しています。このプロキシは、Kubernetes クラスタにデプロイされたシンプルなバックエンド ターゲット アプリケーションを呼び出します。