我正在使用ASP.NET MVC 5并使用SignalR v2.2.2(最新版本)。我的应用程序工作正常,直到页面空闲了一段时间(不确定现在很长,但空闲时间在5到15分钟之间)。一旦它闲置了这段时间,网页上的按钮就不再有效了(因为我认为它们需要一个有效的连接)。
我解决此问题的首选方法是能够增加连接的超时。我怎么能这样做?
如果无法做到这一点,如何检测到页面上的连接已被删除和/或如何在需要时重新建立连接?
我的网页使用javascript,建立与SignalR集线器连接的代码是:
$.connection.hub.start()
.done(function () {
// Does stuff here...
})
.fail(function (e) { console.log(e); });
谢谢
答案 0 :(得分:1)
您可以实施2个食谱:
1.如果连接断开,请重新连接:
import * as interact from 'interactjs';
2.使用$.connection.hub.disconnected(function () {
setTimeout(function () {
$.connection.hub.start();
}, 5000);
});
,以便您尝试保持连接活动:
pingInterval
答案 1 :(得分:0)
处理 connectionSlow 事件,一旦SignalR知道连接问题,就会在进入重新连接模式之前显示一条消息。
处理重新连接事件,以便在SignalR知道断开连接并进入重新连接模式时显示消息。
处理已断开连接的事件,以便在尝试重新连接超时时显示消息。在这种情况下,再次与服务器重新建立连接的唯一方法是通过调用Start方法重新启动SignalR连接,这将创建一个新的连接ID。
答案 2 :(得分:0)
现在有一个更简单的方法:
.withAutomaticReconnect()