WebSocket の使用

このページは ApigeeApigee ハイブリッドに適用されます。

Apigee Edge のドキュメントはこちらをご覧ください。

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

はじめに

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

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

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

Apigee での WebSocket のサポート

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

ポリシーのサポート

ハンドシェイクが完了するまで(つまり HTTP 101 レスポンスがクライアントに返されるまで)は、すべてのポリシーがウェブ ソケット プロキシで�����します。その後、ポリシーは実行されなくなりますが、ハンドシェイクの前に検証された OAuth トークンは引き続き有効で、トークンの有効期限が切れるか、取り消されると、接続は切断されます。

接続の取り消し

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

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

トレースと分析の使用

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

デバッグツールでの 101 ステータスのリクエスト。

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

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

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