我在IE9中使用SignalR,不幸的是,它必须降级为使用永久帧连接。
我花了一些时间用IE中的开发者工具来看这个。我可以看到回调加载到动态插入的IFrame中,并且它们在SignalR插件中调用receive函数。然而,在大约20/30之后,它只是停止响应 - 我不能再从服务器调用客户端脚本。
我猜测IFrame加载最终超时,但似乎没有为此引发任何事件,因此我无法强制重新连接。
有没有人设法在IE中使用强大的SignalR连接?
谢谢:)
答案 0 :(得分:9)
我们遇到一个问题,网站上的Javascript会停止工作,特别是我们注意到Ajax调用不起作用。经过一番调查,我们发现SignalR是导致崩溃的原因,我们发现了这篇关于Forever Frames的帖子。我们尝试使用客户端JavaScript中的以下代码删除SignalR中的Forever Frames支持:
$.connection.hub.start({ transport: ['webSockets', 'serverSentEvents', 'longPolling'] });
因此只支持'webSockets','serverSentEvents','longPolling'。
答案 1 :(得分:2)
答案 2 :(得分:1)
每当我看到这种情况发生时,我实际上已经在后台运行了流氓,僵尸IE9进程。他们甚至没有与他们相关的窗口。因此,我会去杀死那些僵尸并重新启动IE的新实例,并且长时间没有问题,直到任何分析导致问题再次发生。
听起来很疯狂我知道,但是我花了很长时间向David Fowler解释问题的症状以及我怎么也看不出任何理由让iFrame神奇地停止触发事件以让传输知道启动下一个iFrame会话。 SignalR消息本身总是正确终止逻辑消息流,onreadystatechange事件将停止触发。
答案 3 :(得分:0)
将此文件放入文档就绪事件中,所有iframe问题都将得到解决:
$.connection.hub.start({ transport: ['webSockets', 'serverSentEvents', 'longPolling'] });