0

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

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

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 方法?

4

1 回答 1

0

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

于 2015-07-06T20:42:23.427 回答