我正在尝试实现一个使用长轮询从远程(跨域)服务器获取消息的聊天应用程序。
有没有办法用 XDomainRequest 做到这一点?似乎我的连接总是在随机数秒/毫秒(通常大约 1-3 秒)后终止,而不是等待服务器响应。
IE 开发工具告诉我请求已“中止”,没有收到任何数据。
XDomainRequest 是不适合长轮询还是我在这里遗漏了什么?
最佳答案
也有这个问题,作为竞争条件,使用 jQuery iecors 库。尽管 Fiddler 显示 200 响应,但 IE 网络控制台将请求显示为“中止”。
经过几轮顽固的谷歌搜索后,我发现了这个链接,它建议填写所有回调处理程序。我怀疑 onProgress 只是被调用,并且失败,当请求被一个沉重的页面减慢时,导致我的比赛行为。
IE9 XDomainRequest issued requests may abort if all event handlers not specified
对于 jquery.iecors.js,除了一些变量名拼写错误之外,它还缺少 onprogress 处理程序。添加这一行似乎可以解决它。
xdr.onprogress = function () {};
关于ajax - Long Poll 和 IE 的 XDomainRequest 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7037627/