我们正面临类似的问题https://github.com/SignalR/SignalR/issues/3353
当我们启动我们的应用程序时,一段时间后,连接到集线器的所有用户都开始重新连接问题。
在Chrome控制台中,所有用户都在不断地看到这一点:
jquery.signalR.min.js WebSocket连接到'wss:// [我们的网站网址] /信号器/重新连接?transport = webSocke ... HcDfA%3D%3D& connectionData =%5B%7B%22name%22%3A %22myhub%22%7D%5D& tid = 10'失败:WebSocket握手期间出错:意外响应代码:404
所有用户都处于重新连接模式,即此方法不断针对所有用户启动:
connection.hub.stateChanged(function (change) {
if (change.newState === $.connection.connectionState.reconnecting) {
failPendingMessages();
ui.showStatus(1, '');
}
else if (change.newState === $.connection.connectionState.connected) {
if (!initial) {
ui.showStatus(0, $.connection.hub.transport.name);
ui.setReadOnly(false);
} else {
ui.initializeConnectionStatus($.connection.hub.transport.name);
}
initial = false;
}
else if (change.newState === $.connection.connectionState.disconnected && initial === true) {
initial = false;
}
});
我们正在使用Jabbr源代码中的代码。
州正在从连接>重新连接> diconnected>连接
似乎有很多连接后,所有与Hub的连接仍然卡住,即无法正确地与集线器通信,因此连接断开,我们收到“WebSocket握手:意外的响应代码:404”我提到的上方。
请注意,此行为/问题没有固定的时间。有时它会在“应用程序启动”的几分钟内开始,有时需要大约20-30分钟。
这个问题肯定是因为许多连接通过Hub同时与Signalr核心代码进行通信。
是否有任何修复方法?
编辑:我们使用的是最新版本的Signalr,即Microsoft.AspNet.SignalR.Core.dll(2.2.0)