我正在使用SignalR.But有一个关于超时的问题.
几分钟后超时消失,无法正常工作.
如何在SignalR 2.0中设置超时连接?
解决方法
您可以在Owin Startup类中使用以下配置.
// Make long polling connections wait a maximum of 110 seconds for a // response. When that time expires,trigger a timeout command and // make the client reconnect. GlobalHost.Configuration.ConnectionTimeout = TimeSpan.FromSeconds(40); // Wait a maximum of 30 seconds after a transport connection is lost // before raising the Disconnected event to terminate the SignalR connection. GlobalHost.Configuration.DisconnectTimeout = TimeSpan.FromSeconds(30); // For transports other than long polling,send a keepalive packet every // 10 seconds. // This value must be no more than 1/3 of the DisconnectTimeout value. GlobalHost.Configuration.KeepAlive = TimeSpan.FromSeconds(10); //Setting up the message buffer size GlobalHost.Configuration.DefaultMessageBufferSize = 500;
此外,当您希望始终将客户端连接到服务器时,可以尝试在disconnect hub事件中连接它.
var tryingToReconnect = false; $.connection.hub.disconnected(function () { //TODO: write the logic to reconnect to server. if(!tryingToReconnect) { // notifyclient about disconnection setTimeout(function() { $.connection.hub.start(); },5000); // Restart connection after 5 seconds. } }); $.connection.hub.reconnecting(function() { tryingToReconnect = true; console.log("reconnecting..."); }); $.connection.hub.reconnected(function() { tryingToReconnect = false; console.log("Reconnected"); });