Ajax 信号器2-打开多个选项卡后挂起AJX请求
我正在使用Signalr2,当我打开同一页面的多个选项卡时遇到问题。打开4或5个选项卡后,所有请求都处于挂起状态,就像我超出了浏览器允许的最大值一样。如果我关闭几个选项卡,一切都会恢复正常。即使所有的标签都打开了,如果我打开一个不同的浏览器,它也能工作。这在Chrome和Firefox中都会发生。如果禁用信号器,我可以打开任意多个选项卡 这是我的代码:Ajax 信号器2-打开多个选项卡后挂起AJX请求,ajax,signalr,Ajax,Signalr,我正在使用Signalr2,当我打开同一页面的多个选项卡时遇到问题。打开4或5个选项卡后,所有请求都处于挂起状态,就像我超出了浏览器允许的最大值一样。如果我关闭几个选项卡,一切都会恢复正常。即使所有的标签都打开了,如果我打开一个不同的浏览器,它也能工作。这在Chrome和Firefox中都会发生。如果禁用信号器,我可以打开任意多个选项卡 这是我的代码: // Reference the auto-generated proxy for the hub. notificator.hub
// Reference the auto-generated proxy for the hub.
notificator.hub = $.connection.messageHub;
// Create a function that the hub can call back to display messages.
notificator.hub.client.refreshNotifications = function () {
// business code
};
$.connection.hub.start().done(function () {
notificator.hubStarted = true;
});
$.connection.hub.disconnected(function () {
notificator.hubStarted = false;
setTimeout(function () {
$.connection.hub.start();
}, 2000); // Restart connection after 2 seconds.
});
如果删除断开连接事件的处理程序,则问题仍然存在。通知系统工作正常,因此Signaler正在执行其工作,但它在应用程序中引发了问题。它甚至更慢。我找到了两种解决方案:
1) 在我的例子中,它是一个intranet web应用程序,所以我知道每个人都支持WebSocket,WebSocket没有连接限制。但是,为什么这不起作用呢?首先,我在SignalR中添加了日志记录,添加了这一行:
$.connection.hub.logging = true;
然后我尝试强制使用WebSocket:
$.connection.hub.start({ transport: 'webSockets' }).done(function () { .. });
但是,通过查看日志,我发现WebSocket不受支持,因为它们没有安装在服务器中。因此,我在Windows 2012中遵循了以下步骤并安装了它: