.NET 用 Azure WebJobs Web PubSub クライアント ライブラリ - バージョン 1.7.0

この拡張機能は、Azure Functionsで Web PubSub webhook 呼び出しを受信するための機能を提供します。これにより、Web PubSub に発行されたイベントに応答する関数を簡単に記述できます。

ソース コード | パッケージ | API リファレンス ドキュメント | 製品ドキュメント | サンプル

作業の開始

パッケージをインストールする

NuGet を使用して Web PubSub 拡張機能をインストールします。

dotnet add package Microsoft.Azure.WebJobs.Extensions.WebPubSub

前提条件

Web PubSub リソースを持つ Azure サブスクリプション と Azure リソース グループが必要です。 この 手順に 従って、Azure Web PubSub インスタンスを作成します。

クライアントを認証する

拡張機能を Azure Web PubSub サービスで動作させるには、有効な ConnectionStringを指定する必要があります。

Azure Portal で Azure Web PubSub サービスのキーを確認できます。

接続文字列はAzureWebJobsStorageストレージに関する考慮事項に関するページを参照して、必要に応じて処理チェックポイント情報を保持するために使用されます

ローカル開発では、 ファイルを local.settings.json 使用して接続文字列 <connection-string> を格納します。拡張機能でサポートされている既定値として を に WebPubSubConnectionString 設定することも、関数バインド属性で とマッピング Connection = <connection-string> してカスタマイズした名前を設定することもできます。

{
  "Values": {
    "AzureWebJobsStorage": "UseDevelopmentStorage=true",
    "<connection-string>": "Endpoint=https://<webpubsub-name>.webpubsub.azure.com;AccessKey=<access-key>;Version=1.0;"
  }
}

デプロイ時に 、アプリケーション設定 を使用して接続文字列を設定します。

主要な概念

Web PubSub 入力バインドの使用

入力バインディングを使用してサービスへの Websocket 接続を作成するためのビルドWebPubSubConnectionにこの拡張機能を使用する方法については、入力バインドのチュートリアルに従ってください。

Web PubSub 出力バインドの使用

この拡張機能を使用して Web PubSub メッセージを発行する方法については、 出力バインドのチュートリアル に従ってください。

Web PubSub トリガーの使用

トリガー バインドのチュートリアルに従って、サービスアップストリームからイベントが送信されたときに Azure 関数をトリガーする方法について学習してください。

および UserEvent イベントではConnect、関数は戻り値を考慮してサービスを送り返します。 その後、サービスは要求を続行する応答に依存します。それ以外の場合は。 応答とイベントはペアになっています。 たとえば、 Connect は または EventErrorResponseのみを尊重ConnectEventResponseし、他の戻り値は無視します。 が返されると EventErrorResponse 、サービスはクライアント接続を削除します。 トリガー バインドの戻り値の使用については、トリガー バインドの戻り値に関するチュートリアルに従ってください。

Web PubSub 入力バインドを使用する関数

public static class WebPubSubConnectionBindingFunction
{
    [FunctionName("WebPubSubConnectionBindingFunction")]
    public static WebPubSubConnection Run(
        [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post")] HttpRequest req,
        [WebPubSubConnection(Hub = "hub", UserId = "{query.userid}", Connection = "<connection-string>")] WebPubSubConnection connection)
    {
        Console.WriteLine("login");
        return connection;
    }
}

Web PubSub 出力バインドを使用する関数

public static class WebPubSubOutputBindingFunction
{
    [FunctionName("WebPubSubOutputBindingFunction")]
    public static async Task RunAsync(
        [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post")] HttpRequest req,
        [WebPubSub(Hub = "hub", Connection = "<connection-string>")] IAsyncCollector<WebPubSubAction> action)
    {
        await action.AddAsync(WebPubSubAction.CreateSendToAllAction("Hello Web PubSub!", WebPubSubDataType.Text));
    }
}

Web PubSub トリガーを使用する関数

public static class WebPubSubTriggerFunction
{
    [FunctionName("WebPubSubTriggerFunction")]
    public static void Run(
        ILogger logger,
        [WebPubSubTrigger("hub", WebPubSubEventType.User, "message")] UserEventRequest request,
        string data,
        WebPubSubDataType dataType)
    {
        logger.LogInformation("Request from: {user}, data: {data}, dataType: {dataType}",
            request.ConnectionContext.UserId, data, dataType);
    }
}

Web PubSub トリガーの戻り値を使用する関数

public static class WebPubSubTriggerReturnValueFunction
{
    [FunctionName("WebPubSubTriggerReturnValueFunction")]
    public static UserEventResponse Run(
        [WebPubSubTrigger("hub", WebPubSubEventType.User, "message")] UserEventRequest request)
    {
        return request.CreateResponse(BinaryData.FromString("ack"), WebPubSubDataType.Text);
    }
}

トラブルシューティング

トラブルシューティングのガイダンスについては、「Azure Functionsの監視」を参照してください。

次のステップ

Azure 関数の概要または Azure 関数の作成に関するガイドを参照してください

共同作成

このライブラリのビルド、テスト、および投稿の詳細については、 CONTRIBUTING.md を参照してください。

このプロジェクトでは、共同作成と提案を歓迎しています。 ほとんどの共同作成では、共同作成者使用許諾契約書 (CLA) にご同意いただき、ご自身の共同作成内容を使用する権利を Microsoft に供与する権利をお持ちであり、かつ実際に供与することを宣言していただく必要があります。 詳細については、「 cla.microsoft.com」を参照してください。

このプロジェクトでは、Microsoft オープン ソースの倫理規定を採用しています。 詳しくは、「Code of Conduct FAQ (倫理規定についてよくある質問)」を参照するか、opencode@microsoft.com 宛てに質問またはコメントをお送りください。

インプレッション数