设置窗口位置时,我可以让SignalR不断开连接吗?

时间:2014-05-09 09:20:31

标签: javascript ajax signalr

我正在编写一个监听SignalR事件的简单页面,这些事件一旦检测到,就会对我们服务器上的Web服务执行ajax请求。

一旦ajax请求完成后,将返回一个带有自定义URI方案的URL,该方案一旦被重定向,将打开客户端计算机上安装的自定义程序,而无需离开主页面。这是通过在ajax请求的成功回调中调用window.location = url;来实现的。

此方法可以在我们网站的其他区域找到我们正在使用它的方法,通过向我们的程序发送命令而不影响主页面,在回调工作中发出多个ajax请求和重定向。

我正在创建的新页面使用SignalR来决定何时进行这些相同的ajax请求,但它在第一次重定向时断开连接。我在javascript控制台中找到以下消息,我理解这是非常正常的,看看何时卸载页面但是在我的场景中,调用页面实际上从未被卸载:与...的连接被中断页面正在加载。

我正在寻找一种方法来阻止SignalR在重定向上断开连接,因为这会导致进一步的重定向失败,直到SignalR重新建立连接。

1 个答案:

答案 0 :(得分:0)

当用户离开页面时,SignalR会尝试正常停止任何正在进行的连接。 SignalR通过使用jQuery绑定到窗口卸载事件来完成此操作。通常,这是使用$(window).bind("unload", //...完成的,但在Firefox $(window).bind("beforeunload", //...中也会使用。

假设您自己没有附加到这些事件中的任何一个,可以通过使用jQuery取消绑定SignalR绑定的unload和beforeunload事件处理程序来阻止此行为:

$(window).unbind("unload");
$(window).unbind("beforeunload");