次の方法で共有


.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

前提条件

クライアントを認証する

サービスを操作するには、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 宛てに質問またはコメントをお送りください。

インプレッション数