将 SignalR 与 Azure Service Fabric 结合使用
本文关键字:结合 Fabric Service SignalR Azure | 更新日期: 2023-09-27 18:33:41
是否可以将 signalR 与 Microsoft 提供的 Service Fabric 一起使用?我正在尝试通过 signalR/websocket 连接将 UWP 应用和 angularJS 应用连接到托管在 Azure 群集中的无状态可靠服务。但是两者都无法打开这样的连接。在我的本地机器上,一切正常。
将signalR/websockets 与 Service Fabric 配合使用有什么特别需要考虑的吗?有没有例子?
您需要将
负载均衡器配置为客户端 ip。然后用户将始终到达同一节点,其他用户将始终访问其他节点。用户与节点的关系将是持久的。
需要为 signalR 启用跨域设置,才能从其他应用程序调用它。
appBuilder.Map("/signalr", map =>
{
map.UseCors(CorsOptions.AllowAll);
var hubConfiguration = new HubConfiguration()
{
EnableJSONP = true,
EnableDetailedErrors = true,
EnableJavaScriptProxies = true
};
map.RunSignalR(hubConfiguration);
});
此代码可以在安装 SignalR 的 Nuget 包后获取的自述文件中找到.txt该文件。对于跨域功能,还需要安装 Cores nuget 包。
部署此应用程序后,可以看到对 signalR 的某些调用失败,而某些调用成功。默认情况下,可靠无状态服务中的实例计数为 -1。因此,将为服务创建多个实例。
从 signaleR Connection.Start(( 方法将调用三个 SingalR API。这些调用应在同一会话中发生,以便正常工作。当我们在具有多个实例的 Service Fabric 中调用这三个 API 时,调用可能会在不同的节点中处理,从而导致不同的会话,从而导致 singalR 连接失败。
一种解决方案是将无状态 Service Fabric 应用程序的实例计数设为 1。我不认为这是一个优雅的解决方案。