【问题标题】:Send message to a group of users in SignalR Service in Azure Functions在 Azure Functions 的 SignalR 服务中向一组用户发送消息
【发布时间】:2018-11-05 14:06:59
【问题描述】:

查看 SignalR 绑定的 docs 以向指定用户发送消息,您在消息中包含 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 } 
        });
}

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

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

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

【问题讨论】:

  • 你的意思是这段文字,它说的是连接? “通过设置 SignalR 消息的 UserId 属性,您只能将消息发送到已通过用户身份验证的连接。”
  • @anthony-chu 您能分享您对此的见解吗?谢谢。
  • @KarishmaTiwari-MSFT 与其他 SignalR 库一起,可以将经过身份验证的用户添加到通讯组,然后使用组名调用 signalr,它将为您处理所有这些客户端的广播。

标签: azure azure-functions signalr-service


【解决方案1】:

latest release 中引入了组操作。

现在你可以:

  • SignalRMessage 中使用GroupName 向群组发送消息
  • 使用IAsyncCollector&lt;SignalRGroupAction&gt; 输出在组中添加/删除用户

【讨论】:

    【解决方案2】:

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

    the code of current extension SDKMicrosoft.Azure.WebJobs.Extensions.SignalRServicev1.0.0-preview1-10002。 它显示扩展只有两个方法 SendToAll 和 SendToUser。

        Task SendToAll(string hubName, SignalRData data);
        Task SendToUser(string hubName, string userId, SignalRData data);
    

    让你困惑的评论其实是给old sample的,作者忘记修改了。

    好消息是支持群组操作的是under progress

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多