当导航到项目中的另一个页面时(但是当导航到另一个网站或关闭选项卡时)不会立即调用Ondisconnect

时间:2013-11-20 11:07:56

标签: asp.net-mvc timeout signalr disconnect

我们将项目升级到SignalR v2后,ondisconnect的行为似乎发生了变化。 当导航到另一个网站时,例如google.com,会立即调用ondisconnect(关闭其运行的选项卡时也是如此)。但是当我们导航到我们的webproject中的另一个页面时,ondisconnect会在稍后调用,假设在超时用完之后。我们通过创建一个全新的MVC4项目和chatHub示例来验证此行为,以代表我们排除用户错误(使用谷歌浏览器测试)。 我们的应用程序在很大程度上依赖于当用户离开页面时触发的ondisconnect(用于用户清理,即离开聊天室)。

你能告诉我这是否是设计的,当用户导航到另一个页面时,我们必须立即点击断开连接(与关闭标签相同)?我们没有更改默认的超时/保持活动设置。添加我们不希望依赖像beforeunload这样的方法来使其像以前一样工作。

提前多多谢谢!

1 个答案:

答案 0 :(得分:3)

我已将此发布到github上的SignalR团队,Halter73以临时解决方法作出回应。有关详细信息,请参阅https://github.com/SignalR/SignalR/issues/2719

添加:

 window.onbeforeunload = function (e) {
        $.connection.myHub.connection.stop();
    };

我们的项目已经解决了这个问题。