我正在尝试使用AWS Elastic负载均衡器和Auto Scaling在基于负载平衡的Web场中部署基于signalR的Web应用程序。 我的应用程序架构是这样的,所有用户都将消息从Web浏览器发送到服务器,服务器将这些消息发送到远程计算机上的Silverlight OOB(或WPF应用程序)以显示消息。它在单个Web服务器环境中工作正常,但是在负载均衡器后面有多个Web服务器,似乎只有一个服务器将这些消息发送到Silverlight OOB(或WPF应用程序),而连接到服务器场其他服务器的用户发送的消息丢失。 显然,我的SL OOB(或WPF)应用程序只连接到服务器场的一个服务器。理想情况下,它应该连接到负载均衡器。 在SL OOB中,我使用以下命令连接服务器上的集线器:
Dim url As String = "http://xxxx.com/"
Dim hubConnection As New HubConnection(url)
Dim hubProxy As IHubProxy = hubConnection.CreateHubProxy("myHub")
现在我不认为网络服务器互相发送消息。 有什么可以解决这个问题?
答案 0 :(得分:1)
你的理论是正确的。 SL OOB客户端仅从连接到与SL OOB客户端相同的服务器的Web客户端接收消息。这是已知的SignalR架构限制。解决问题的唯一方法是使用名为 backplane 的东西将所有服务器连接到单个消息总线