次の方法で共有


Azure Functions の Azure Web PubSub 出力バインド

Web PubSub 出力バインドを使用して、Azure Web PubSub サービスを呼び出して何かを行います。 次のメッセージを送信できます。

  • 接続されているすべてのクライアント
  • 特定のユーザーに対して認証された接続されているクライアント
  • 特定のグループに参加している接続されているクライアント
  • 特定のクライアント接続

出力バインドを使用すると、クライアントとグループを管理したり、特定の connectionId とグループを対象とするアクセス許可を付与または取り消したりすることもできます。

  • グループに接続を追加する
  • ユーザーをグループに追加
  • グループから接続を削除する
  • グループからユーザーを削除
  • ユーザーをすべてのグループから削除する
  • すべてのクライアント接続を閉じる
  • 特定のクライアント接続を閉じる
  • グループ内の接続を閉じる
  • 接続のアクセス許可を付与する
  • 接続のアクセス許可を取り消す

セットアップと構成の詳細については、概要に関するページをご覧ください。

[Function("WebPubSubOutputBinding")]
[WebPubSubOutput(Hub = "<hub>", Connection = "<web_pubsub_connection_name>")]
public static WebPubSubAction Run([HttpTrigger(AuthorizationLevel.Function, "get", "post")] HttpRequestData req)
{
    return new SendToAllAction
    {
        Data = BinaryData.FromString("Hello Web PubSub!"),
        DataType = WebPubSubDataType.Text
    };
}

const { app, output } = require('@azure/functions');
const wpsMsg = output.generic({
    type: 'webPubSub',
    name: 'actions',
    hub: '<hub>',
});

app.http('message', {
    methods: ['GET', 'POST'],
    authLevel: 'anonymous',
    extraOutputs: [wpsMsg],
    handler: async (request, context) => {
        context.extraOutputs.set(wpsMsg, [{
            "actionName": "sendToAll",
            "data": `Hello world`,
            "dataType": `text`
        }]);
    }
});

この言語の完全なサンプルは保留中です

Java 用 Web PubSub 拡張機能はまだサポートされていません。

WebPubSubAction

WebPubSubAction は、出力バインドの基本抽象型です。 派生型は、サーバーがサービスに呼び出させるアクションを表します。

C# 言語では、使用可能なアクションを検出できるように、WebPubSubAction に静的メソッドがいくつか用意されています。 たとえば、ユーザーは SendToAllAction を呼び出して WebPubSubAction.CreateSendToAllAction() を作成できます。

派生クラス プロパティ
SendToAllAction Data、DataType、Excluded
SendToGroupAction Group、Data、DataType、Excluded
SendToUserAction UserId、Data、DataType
SendToConnectionAction ConnectionId、Data、DataType
AddUserToGroupAction UserId、Group
RemoveUserFromGroupAction UserId、Group
RemoveUserFromAllGroupsAction UserId
AddConnectionToGroupAction ConnectionId、Group
RemoveConnectionFromGroupAction ConnectionId、Group
CloseAllConnectionsAction Excluded、Reason
CloseClientConnectionAction ConnectionId、Reason
CloseGroupConnectionsAction Group、Excluded、Reason
GrantPermissionAction ConnectionId、Permission、TargetName
RevokePermissionAction ConnectionId、Permission、TargetName

actionName は、型を解決するためのキー パラメーターです。 使用可能なアクションを次に示します。

アクション名 プロパティ
sendToAll Data、DataType、Excluded
sendToGroup Group、Data、DataType、Excluded
sendToUser UserId、Data、DataType
sendToConnection ConnectionId、Data、DataType
addUserToGroup UserId、Group
removeUserFromGroup UserId、Group
removeUserFromAllGroups UserId
addConnectionToGroup ConnectionId、Group
removeConnectionFromGroup ConnectionId、Group
closeAllConnections Excluded、Reason
closeClientConnection ConnectionId、Reason
closeGroupConnections Group、Excluded、Reason
grantPermission ConnectionId、Permission、TargetName
revokePermission ConnectionId、Permission、TargetName

重要

データ型がstringまたはjsonに設定されている場合、データ変換のあいまいさを回避するには、送信されたメッセージ関連アクションのメッセージ データ プロパティをtextする必要があります。 JSON.stringify() を使用して、必要な JSON オブジェクトを変換してください。 これは、UserEventResponse.Data と連携する WebPubSubTrigger など、メッセージ プロパティを使用するあらゆる場所に適用されます。

データ型が binary に設定されている場合は、dataTypebinary として構成された function.json が自然にサポートされるバインドを利用できます。詳細については、「トリガーとバインドの定義」を参照してください。

構成

次の表は、function.json ファイルと WebPubSub 属性で設定したバインド構成のプロパティを説明しています。

function.json のプロパティ 属性のプロパティ 説明
タイプ 該当なし webPubSub に設定されている必要があります。
方向 該当なし out に設定されている必要があります。
名前 該当なし 出力バインド オブジェクトの関数コードで使用される変数名。
ハブ ハブ この値は、トリガーされる関数の Web PubSub ハブの名前に設定する必要があります。 高い優先順位として属性への値の設定をサポートしていますが、またはグローバル値としてアプリ設定に設定することもできます。
接続 つながり Web PubSub Service 接続文字列を含むアプリ設定の名前 (既定値は "WebPubSubConnectionString")。

重要

最適なセキュリティを確保するために、関数アプリでは、共有シークレット キーを含む接続文字列を使用する代わりに、Web PubSub サービスに接続するときにマネージド ID を使用する必要があります。 詳細については、「 Microsoft Entra ID を使用してマネージド ID 要求を認証するを参照してください。

トラブルシューティング

コンソール ログの設定

また、サービスに対して行う要求の詳細を確認する場合は、単にコンソールのログ記録を有効にすることもできます。