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