我有一个 Service Fabric 集群,其中包含带有 signalR 的 Web API 和可靠的 Actor 设置。
我还有一个单独的 MVC 应用程序来访问 Web API。
我可以使用 MVC 应用程序很好地连接到 signalR,一切正常。但是,当我使用可靠的参与者调用 API 时,该参与者应该触发向 MVC 应用程序连接的组发送 signalR 广播,但我的 MVC 应用程序上没有任何反应。我知道它正在访问 API,因为我已经记录了它以确定。
我已将负载均衡器设置为客户端 IP 的 session 持久性。我怀疑 signalR 集线器可能不是同一个“集线器”或其在另一个节点上?有什么方法可以强制它们都在同一个上以便进行通信吗?我是不是忘记了什么?如果我需要提供更多信息,请告诉我。
最佳答案
我找到的答案是 SignalR Scaleout with Redis
基本上,这使用 redis 在服务结构中的所有节点之间共享 signalR 消息。
只需设置 Redis,引用 Microsoft.AspNet.SignalR.Redis
并将其添加到您的启动中:
GlobalHost.DependencyResolver.UseRedis(new RedisScaleoutConfiguration(redisConnectionString, "SignalR"));
关于带有 SignalR 的 Azure Service Fabric WebAPI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39583477/