我读到Azure上的Signalr需要服务总线实现(例如https://github.com/SignalR/SignalR/wiki/Azure-service-bus)以实现可伸缩性。
但是,我的服务器只对单个客户端(调用者)进行回调:
// Invoke a method on the calling client
Caller.addMessage(data);
如果不需要Signalr的广播功能,还需要一个底层服务总线吗?
答案 0 :(得分:9)
Service Bus依赖项不是Azure特有的。每当您有多个服务器在运行时,您的一些signalR客户端将创建与特定服务器的连接。如果要保持多个服务器同步,需要处理服务器到服务器的实时通信。 pub-sub服务总线模型很好地满足了这个要求。
dfowleR在评论中列出了具体案例。确保你读到那么远!
如果您在单个服务器上运行(在Azure上没有sla),signalR将在Cloud Service Web角色以及新的Azure Web站点上正常运行。我在这个简单的场景中做了一个screencast,它没有服务总线依赖,但只在一台服务器上运行。
答案 1 :(得分:2)
为了支持负载平衡场景,是否可以在多个实例(即Azure)之间建立“服务器到服务器”SignalR PersistConnection? 如果是这样,我们可以使用SQL Azure表,其中所有实例在启动时注册,因此最新的实例可以连接到以前的实例。