Azure Web PubSub イベント ハンドラーのトラブルシューティングとデバッグを行う方法
WebSocket 接続が Web PubSub サービスに接続すると、サービスは登録されたアップストリームへの HTTP POST 要求を形成し、HTTP 応答を期待します。 アップストリームをイベントハンドラーとして呼び出します。イベントハンドラーは、 Web pubsub CloudEvents 仕様に従って受信イベントの処理を担当します。
イベント ハンドラー エンドポイントをローカルで実行する
イベント ハンドラーがローカルで実行されている場合、ローカル サーバーにはパブリックにアクセスできません。
localhost にトラフィックをルーティングするための 2 つの方法があります。1 つは、ngrok、localtunnel、TunnelRelay などのツールを使用して、インターネット上でアクセスできるように localhost を公開することです。 もう 1 つの方法 (推奨される方法でもある) は、awps-tunnel を使用し、ツールを介して Web PubSub サービスからローカル サーバーにトラフィックをトンネリングすることです。
Web PubSub ローカル トンネル ツールでは、内部で、Web PubSub サービスへのいくつかの永続的なトンネル接続 (サーバー接続の一種と見なす) を確立します。 イベントが発生するたびに、Web PubSub サービスでは、トンネル接続を介してローカル トンネル ツールにイベント メッセージをルーティングし、ローカル トンネル ツールでは HTTP 要求を再形成し、アップストリーム サーバーに要求を送信します。
ローカル トンネル ツールでは、Web ビュー ページを介してワークフローが鮮明に示されます。 既定では、Web ビューはローカル ポート upstream port + 1000
をリッスンします。Web ビュー ポートはコマンド パラメーター --webviewPort <your-custom-port>
を使用してカスタマイズできます。
Web ビューには次の 4 つのタブが含まれています。
- [クライアント] タブには、Web PubSub を接続してデータを送信するテスト WebSocket クライアントが示されます。
- [Web PubSub] タブには、Web PubSub サービスに関する基本情報が示され、有効になっている場合はライブ トレース ページが埋め込まれます。
- [ローカル トンネル] タブには、ローカル トンネル ツールを介してローカル サーバーに送信されるすべての要求が一覧表示されます。
- [サーバー] タブには、ローカル サーバーに関する基本情報が示されます。 また、以下に示すサンプル コードのようなコードが組み込みのエコー サーバーに提供されます。
「ローカル トンネル ツールを使用した開発」に従って、トンネル ツールをローカルにインストールして実行し、イベント ハンドラー サーバーをローカルで開発します。
イベント ハンドラー エンドポイントをオンラインでデバッグする
場合によっては、構成済みのイベント ハンドラーアップストリームにイベントを送信するときに問題が発生することがあります。 一般的なエラーの種類の 1 つは、AbuseProtectionResponseInvalidStatusCode
、AbuseProtectionResponseMissingAllowedOrigin
、AbuseProtectionResponseFailed
など、不正使用保護の失敗に関するものです。 このようなエラーは、アップストリームのアプリ サーバー設定に関連している可能性があります。たとえば、403 状態コードはアプリ サーバーの認証構成に関連している可能性があり、404 状態コードは一貫性のないイベント ハンドラー パスの構成が原因である可能性があります。 このようなエラーをトラブルシューティングする 1 つの方法は、構成済みイベント ハンドラー URL に不正使用保護要求を送信して、それが機能するかどうかを確認することです。たとえば、curl
コマンドを使用して、構成済みイベント ハンドラー URL https://abc.web.com/eventhandler
に不正使用保護要求を送信する場合は、次のようになります。
curl https://abc.web.com/eventhandler -X OPTIONS -H "WebHook-Request-Origin: *" -H "ce-awpsversion: 1.0" --ssl-no-revoke -i
このコマンドによって 204 が返されるはずです。
次のステップ
これらのリソースを使用して、独自のアプリケーションの構築を開始します。