【问题标题】:SignalR scaleout client to server broadcastSignalR 横向扩展客户端到服务器广播
【发布时间】:2015-07-06 12:40:33
【问题描述】:

如何使用 SignalR 横向扩展将消息从客户端广播到连接到我的背板的所有服务器?我认为它应该默认工作,但是只有一个服务器的集线器正在接收消息。

设置:我在负载均衡器后面有 4 个虚拟机,我正在使用 SignalR 和 Redis 背板。我有以下集线器:

public class ProgressHub : Hub
{
    public void StartProcessing(string clientId)
    {
        // ...
    }
}

在客户端,我使用以下方法调用此方法:

$.connection.hub.start().done(function() {
    proghub.server.startProcessing(me.clientId);
});

我已经在消息总线上启用了跟踪,并且所有服务器都收到了消息:

SignalR.ScaleoutMessageBus Information: 0 : OnReceived(0, 54, 1)

但是,仅在一台服务器上调用 Hub 方法。如何让这个调用在所有服务器上执行 StartProcessing 方法?

【问题讨论】:

    标签: c# .net signalr signalr-backplane


    【解决方案1】:

    这是不可能的。最好的方法是在服务器之间启用某种同步机制。由于 Redis 被用作背板,它也可以用作这样的机制。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-06-09
      • 1970-01-01
      • 2018-11-14
      • 2012-07-18
      • 2016-05-24
      • 2016-02-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多