Azure API Management サービスは、あらゆる環境にわたる API のためのハイブリッドなマルチクラウド管理プラットフォームです。 この記事では、Azure API Management と Web PubSub for Socket.IO を使用して、アプリケーションにリアルタイム機能を追加する方法について説明します。
制限事項
Socket.IO クライアントは WebSocket と Long Polling をサポートしており、クライアントの既定では、長いポーリングを使ってサービスに接続してから WebSocket にアップグレードします。 ただし、現在のところ、API Management は、同じパスをたどるさまざまな API (WebSocket または HTTP) をまだサポートしていません。 クライアント設定で websocket
または polling
を設定する必要があります。
リソースを作成する
このステップ バイ ステップ ガイドに従うには、次のものが必要です。
- 「Web PubSub for Socket.IO リソースを作成する」に従って、Web PubSub for Socket.IO インスタンスを作成します。
- ARM テンプレートを使用した Azure API Management のデプロイに関するクイックスタートに従って、API Management インスタンスを作成します。
API Management を設定する
クライアントが websocket
トランスポートに接続するときに API を構成する
このセクションでは、Socket.IO クライアントが websocket
トランスポートに接続するときに API Management を構成する手順について説明します。
API Management インスタンスのポータルで [API] タブに移動し、[API の追加]、[WebSocket] の順に選択し、次のパラメーターを指定して [作成] します。
- 表示名:
Web PubSub for Socket.IO
- Web サービスの URL:
wss://<your-webpubsubforsocketio-service-url>/clients/socketio/hubs/eio_hub
- API URL サフィックス:
clients/socketio/hubs/eio_hub
ハブ名はアプリケーションに合わせて変更できます。
- 表示名:
[作成] を押して API を作成し、作成が完了したら、簡単なデモ用途なので、[設定] タブに切り替えて、[サブスクリプションは必須です] チェックボックスをオフにします
クライアントが polling
トランスポートに接続するときに API を構成する
このセクションでは、Socket.IO クライアントが websocket
トランスポートに接続するときに API Management を構成する手順について説明します。
API Management インスタンスのポータルで [API] タブに移動し、[API の追加]、[WebSocket] の順に選択し、次のパラメーターを指定して [作成] します。
- 表示名:
Web PubSub for Socket.IO
- Web サービスの URL:
https://<your-webpubsubforsocketio-service-url>/clients/socketio/hubs/eio_hub
- API URL サフィックス:
clients/socketio/hubs/eio_hub
ハブ名はアプリケーションに合わせて変更できます。
- 表示名:
[設定] タブに切り替え、デモ用なので、[サブスクリプションは必須です] をオフにします
[設計] タブに切り替えて、[操作の追加] を選択し、次のパラメーターを指定して保存します。
post データの操作を追加する
- 表示名: connect
- URL: POST /
データを取得するための操作を追加する
- 表示名: connect get
- GET /
サンプルを試す
これで、トラフィックは API Management 経由で Web PubSub for Socket.IO に到達できるようになります。 アプリケーションには構成がいくつかあります。 例としてチャット アプリケーションを使ってみましょう。
GitHub リポジトリ https://github.com/Azure/azure-webpubsub をクローンし、sdk/webpubsub-socketio-extension/examples/chat
フォルダーを調べます
次に、このサンプルが API Management で機能するようにいくつかの変更を加えます
public/main.js
を開きます。これは Socket.IO クライアント側コードです。Socket.IO のコンストラクターを編集します。 トランスポートとして
websocket
またはpolling
を選択する必要があります。const webPubSubEndpoint = "https://<api-management-url>"; var socket = io(webPubSubEndpoint, { transports: ["websocket"], // Depends on your transport choice. If you use WebSocket in API Management, set it to "websocket". If choosing Long Polling, set it to "polling" path: "/clients/socketio/hubs/eio_hub", // The path also need to match the settings in API Management });
Web PubSub for Socket.IO の [キー] タブ。 [接続文字列] をコピーし、次のコマンドを使用してサーバーを実行します。
npm install npm run start -- <connection-string>
出力に従って、ブラウザーを使用してエンドポイントにアクセスします
Visit http://localhost:3000
このサンプルでは、他のユーザーとチャットできます。