.NET 用 Azure Web PubSub サービス ミドルウェア クライアント ライブラリ - バージョン 1.2.0
Azure Web PubSub Service は、WebSocket とパブリッシュ/サブスクライブ パターンを使用してリアルタイム メッセージング Web アプリケーションを構築できるサービスです。 WebSocket API をサポートするプラットフォームは、Web ページ、モバイル アプリケーション、エッジ デバイスなど、サービスに簡単に接続できます。このサービスは WebSocket 接続を管理し、最大 100,000 の 同時 接続を許可します。 これらのクライアントを管理し、リアルタイム メッセージを配信するための強力な API が提供されます。
サーバーとクライアント間、またはクライアントどうしで、リアルタイムのパブリッシュ-サブスクライブ メッセージングを必要とするあらゆるシナリオに、Azure Web PubSub サービスは使用できます。 従来のリアルタイム機能は、多くの場合、サーバーからのポーリングや HTTP 要求の送信を必要としますが、そのようなリアルタイム機能にも Azure Web PubSub サービスを使用できます。
このライブラリを使用すると、次のアクションが行えます。 ここで使われている用語の詳細は、主な概念のセクションを参照してください。
- CloudNative CloudEvents でアップストリーム要求を解析する
- アップストリーム要求の検証オプションを追加する
- さまざまなアップストリーム イベントを処理するユーザー定義機能を追加する API
ソースコード | パッケージ | API リファレンス ドキュメント | 製品ドキュメント | サンプル |
作業の開始
パッケージをインストールする
NuGet からクライアント ライブラリをインストールする
dotnet add package Microsoft.Azure.WebPubSub.AspNetCore
前提条件
- Azure サブスクリプション。
- 既存の Azure Web PubSub サービス インスタンス。
クライアントを認証する
サービスを操作するには、Web PubSub サービスに有効な資格情報を指定する必要があります。 これを可能にするには、Microsoft Azure portal でアクセスできる接続文字列またはキーが必要です。 また、サービス REST API を呼び出す場合は、 を呼び出 AddWebPubSubServiceClient<THub>()
すことができます。ここで THub
、 は重要なイベントをリッスンして実装されています WebPubSubHub
。
Web PubSub サービス オプションを構成する
public void ConfigureServices(IServiceCollection services)
{
services.AddWebPubSub(o =>
{
o.ServiceEndpoint = new("<connection-string>");
}).AddWebPubSubServiceClient<SampleHub>();
}
エンドポイント ルーティングへのマップWebPubSubHub
public void Configure(IApplicationBuilder app)
{
app.UseEndpoints(endpoint =>
{
endpoint.MapWebPubSubHub<SampleHub>("/eventhandler");
});
}
主要な概念
Azure Web PubSub の一般的な Web PubSub 概念の概念の詳細
WebPubSubHub
WebPubSubHub
は、サブスクライブされた Web PubSub サービス イベントをユーザーが実装できるようにする抽象クラスです。 ユーザーがサービス側で イベント ハンドラー を登録すると、これらのイベントはサービスからサーバーに転送されます。 また、 WebPubSubHub
ユーザーがこれらのイベントを処理できるように、サービス イベントにマッピングする 4 つのメソッド (クライアント管理、検証、メッセージのブロードキャストの操作 Azure.Messaging.WebPubSub
など) が提供されます。 詳細については、以下のサンプルを参照してください。
注
4 つのメソッドのうち、 と
OnMessageReceivedAsync()
は、OnConnectAsync()
サービスがサーバーから返されるイベントをブロックしています。 マップされた正しい応答に加えて、サーバーは要求がサーバー側のロジックに対して実行されるたびに例外をスローできます。 とUnauthorizedAccessException
は に401Unauthorized
変換され、rest は例外メッセージと共に に500InternalServerError
変換され、サービスを返します。 その後、サービスは現在のクライアント接続を削除します。
例
アップストリーム Connect
イベントを処理する
private sealed class SampleHub : WebPubSubHub
{
internal WebPubSubServiceClient<SampleHub> _serviceClient;
// Need to ensure service client is injected by call `AddServiceHub<SampleHub>` in ConfigureServices.
public SampleHub(WebPubSubServiceClient<SampleHub> serviceClient)
{
_serviceClient = serviceClient;
}
public override ValueTask<ConnectEventResponse> OnConnectAsync(ConnectEventRequest request, CancellationToken cancellationToken)
{
var response = new ConnectEventResponse
{
UserId = request.ConnectionContext.UserId
};
return new ValueTask<ConnectEventResponse>(response);
}
}
トラブルシューティング
コンソール ログの設定
また、サービスに対して行う要求の詳細を確認する場合は、コンソールのログ記録を簡単に有効にすることもできます。
次のステップ
このライブラリの使用方法の詳細な例については、 Samples ディレクトリを参照してください。
共同作成
このプロジェクトでは、共同作成と提案を歓迎しています。 ほとんどの共同作成では、共同作成者使用許諾契約書 (CLA) にご同意いただき、ご自身の共同作成内容を使用する権利を Microsoft に供与する権利をお持ちであり、かつ実際に供与することを宣言していただく必要があります。 詳細については、https://cla.microsoft.com. を参照してください。
pull request を送信すると、CLA を提供して PR (ラベル、コメントなど) を適宜装飾する必要があるかどうかを CLA ボットが自動的に決定します。 ボットによって提供される手順にそのまま従ってください。 この操作は、Microsoft の CLA を使用するすべてのリポジトリについて、1 回だけ行う必要があります。
このプロジェクトでは、Microsoft オープン ソースの倫理規定を採用しています。 詳しくは、「Code of Conduct FAQ (倫理規定についてよくある質問)」を参照するか、opencode@microsoft.com 宛てに質問またはコメントをお送りください。
Azure SDK for .NET