在 Azure Functions 的 SignalR 服务中向一组用户发送消息

Kir*_*ein 6 azure azure-functions signalr-service

查看SignalR 绑定的文档以向指定用户发送消息,您UserId在消息中包含该属性 -

[FunctionName("SendMessage")]
public static Task SendMessage(
    [HttpTrigger(AuthorizationLevel.Anonymous, "post")]object message, 
    [SignalR(HubName = "chat")]IAsyncCollector<SignalRMessage> signalRMessages)
{
    return signalRMessages.AddAsync(
        new SignalRMessage 
        {
            // the message will only be sent to these user IDs
            UserId = "userId1",
            Target = "newMessage", 
            Arguments = new [] { message } 
        });
}
Run Code Online (Sandbox Code Playgroud)

此示例直接取自文档,但注释暗示您向多个用户 ID发送消息,即使该属性是字符串而不是数组。

您将如何指定多个用户?(例如,如果他们一起在私人聊天频道中)或者评论的措辞是否存在错误,您需要为每个用户发送一条消息?

对于其他版本的 SignalR,我会将它们放在一个组中,但函数不存在此绑定。

Jer*_*Liu 2

不幸的是,正如文档所说,现在使用 Azure 函数绑定,我们只能向一个用户或所有客户端发送消息。

查看当前扩展SDK v1.0.0-preview1-10002的代码 Microsoft.Azure.WebJobs.Extensions.SignalRService。它显示该扩展只有两个方法 SendToAll 和 SendToUser。

    Task SendToAll(string hubName, SignalRData data);
    Task SendToUser(string hubName, string userId, SignalRData data);
Run Code Online (Sandbox Code Playgroud)

令您困惑的评论实际上是针对旧示例的,作者忘记修改它了。

好消息是,对集团运营的支持正在取得进展