WebSocket の使用(ベータ版)

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

概要

ゲーム、コミュニケーション、金融取引、その他の高スループットのアクティビティなど、リアルタイムのウェブ インタラクションが必要な状況は数多くあります。

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

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

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

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

ポリシーのサポート

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

接続の取り消し

次の場合、WebSocket 接続は閉じられます。

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

トレースと分析の使用

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

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

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

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