5

I am using SignalR in IE9 and, unfortunately, it has to degrade to using the forever frame connection.

I have spent some time looking at this with the Developer Tools in IE. I can see the callbacks loading into the dynamically inserted IFrame, and they call the receive function in the SignalR plugin. However after about 20/30 of these it just stops responding - I can no longer call client script from the server.

I'm guessing that the IFrame load is finally timing out, but there appear to be no events raised for this, so I cannot force a reconnect.

Has anyone managed to get a robust SignalR connection working in IE?

Thanks :)

4

4 回答 4

9

我们遇到了网站上的 Javascript 停止工作的问题,特别是我们注意到 Ajax 调用不起作用。经过一番调查,我们发现 SignalR 是导致崩溃的原因,我们发现了这篇关于 Forever Frames 的帖子。我们尝试使用客户端 JavaScript 中的以下代码删除 SignalR 中的 Forever Frames 支持:

$.connection.hub.start({ transport: ['webSockets', 'serverSentEvents', 'longPolling'] });

因此只支持'webSockets'、'serverSentEvents'、'longPolling'。

于 2013-06-04T09:20:20.010 回答
2

根据这个Github 问题,这已在 jQuery 1.10.1 中得到修复。

该问题在 1.9.x 中引入并在 1.10.1 中修复。

使用 JQuery 1.8.1 运行它似乎也可以工作。

解决方案:更新 jQuery

于 2013-07-09T07:14:25.687 回答
1

每当我看到这种情况发生时,我实际上都有在后台运行的流氓、僵尸 IE9 进程。他们甚至没有与之关联的窗口。所以,我会去杀死那些僵尸并重新启动一个新的 IE 实例,并且很长一段时间都没有问题,直到任何导致问题的异常再次发生。

我知道这听起来很疯狂,但我花了很长时间向 David Fowler 解释问题的症状,以及我怎么看不出 iFrame 神奇地停止触发事件以让传输知道开始下一个 iFrame 会话的任何原因。SignalR 消息本身总是正确终止逻辑消息流,onreadystatechange 事件将简单地停止触发。

于 2012-09-04T21:14:18.727 回答
0

将其放入文档就绪事件中,您的所有 iframe 问题都将得到解决:

$.connection.hub.start({ transport: ['webSockets', 'serverSentEvents', 'longPolling'] });
于 2014-06-30T13:08:18.950 回答