【问题标题】:SIGNALR Backplane - What happend when you send message to a groupSIGNALR 背板 - 当您向群组发送消息时发生了什么
【发布时间】:2016-07-27 04:06:02
【问题描述】:

当您将 SignalR 配置为使用 SQL 背板并发送到组时,SignalR 是在背板中为组创建一条消息还是为组中的每个客户端 ID 创建一条消息。

我需要我的 SignalR 的两个实例,但由于客户端在实例之间有不同的 connectionId,我需要将消息发送到可能是组的唯一标识符。

谁能回答这个问题? 谢谢

【问题讨论】:

    标签: signalr signalr-backplane


    【解决方案1】:

    每个服务器实例都通过总线连接到背板。发送消息时,它会到达背板,然后背板将其发送到每个服务器。当服务器从背板获得消息时,它会将消息放入其本地缓存中。然后,服务器从其本地缓存将消息传递给客户端。

    根据:http://www.asp.net/signalr/overview/performance/scaleout-in-signalr

    这意味着服务器(集线器)将决定如何处理消息,因此您可以做任何事情。

    这可能会有所帮助。 http://www.asp.net/signalr/overview/performance/scaleout-with-sql-server

    【讨论】:

    • 感谢您的回答,但请您解释一下我如何在 Hub 中处理该消息。据我所知,集线器允许我管理客户端的连接/断开连接,仅此而已....
    • 使用自定义管道?
    • 我认为您并不了解背板的用途,一旦设置好背板,您无需做任何事情。您所有的消息传递和消息处理都在集线器中完成,这意味着您使用signlar 应用程序的方式与没有背板的方式完全相同。因此,如果您想向特定客户端广播,您可以自己设置所有内容,可以使用组,也可以使用 onConnected 事件中的 connectionid。
    • “当服务器从背板获得消息时,它会将消息放入其本地缓存中。然后服务器将消息从其本地缓存传递给客户端。”如果我在背板的 RabbitMq 队列上有一条消息,它如何传递到集线器中的特定侦听组?
    • 哦!!好的,现在我明白了,这不是背板问题.. 试试这个 IHubContext context = GlobalHost.ConnectionManager.GetHubContext();
    猜你喜欢
    • 1970-01-01
    • 2017-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-27
    • 2016-04-14
    相关资源
    最近更新 更多