SignalR "Error during WebSocket handshake" 有时
SignalR "Error during WebSocket handshake" sometimes
我的应用程序在我的生产环境中大约有一半时间在接受握手时遇到问题。在我的本地机器和我的暂存环境中,与生产环境相同,它每次都能正常工作。
这是一个使用 aspnet-signalr/1.1.4
的 .Net Core 2.1 应用程序
我没有将 SignalR 配置为使用我 startup.s
中的任何细节
app.UseSignalR(routes => { routes.MapHub<PortfolioHub>("/loadpagedetailsjob"); });
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Dashboard}/{action=Index}/{id?}");
});
我的 PortfolioHub 只是 Hub 的直接实现 class
在我的页面中
var connection = new signalR.HubConnectionBuilder()
.withUrl('/loadpagedetailsjob')
.configureLogging(signalR.LogLevel.Information)
.build();
connection.start().then(function () {
connection.invoke("Subscribe");
});
看起来它尝试协商网络套接字然后进行长轮询,但都失败了。但是请求 return 200
因为它只是有时发生,所以我在解决问题时遇到了问题。在这一点上我唯一的怀疑是因为我的环境在负载平衡后面的 AWS 中,协商请求被路由到可能导致问题的不同服务器?
感谢任何帮助。
SignalR 要求一个连接始终由同一台服务器处理。典型的解决方案是将负载均衡器配置为使用粘性会话。启用粘性会话后,负载均衡器会将同一用户的请求路由到同一后端服务器。
https://docs.microsoft.com/en-us/aspnet/core/signalr/scale?view=aspnetcore-3.1
我的应用程序在我的生产环境中大约有一半时间在接受握手时遇到问题。在我的本地机器和我的暂存环境中,与生产环境相同,它每次都能正常工作。
这是一个使用 aspnet-signalr/1.1.4
的 .Net Core 2.1 应用程序我没有将 SignalR 配置为使用我 startup.s
中的任何细节app.UseSignalR(routes => { routes.MapHub<PortfolioHub>("/loadpagedetailsjob"); });
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Dashboard}/{action=Index}/{id?}");
});
我的 PortfolioHub 只是 Hub 的直接实现 class
在我的页面中
var connection = new signalR.HubConnectionBuilder()
.withUrl('/loadpagedetailsjob')
.configureLogging(signalR.LogLevel.Information)
.build();
connection.start().then(function () {
connection.invoke("Subscribe");
});
看起来它尝试协商网络套接字然后进行长轮询,但都失败了。但是请求 return 200
因为它只是有时发生,所以我在解决问题时遇到了问题。在这一点上我唯一的怀疑是因为我的环境在负载平衡后面的 AWS 中,协商请求被路由到可能导致问题的不同服务器?
感谢任何帮助。
SignalR 要求一个连接始终由同一台服务器处理。典型的解决方案是将负载均衡器配置为使用粘性会话。启用粘性会话后,负载均衡器会将同一用户的请求路由到同一后端服务器。
https://docs.microsoft.com/en-us/aspnet/core/signalr/scale?view=aspnetcore-3.1