我要开发一个彗星编程框架,但我不能使用 Web Sockets 或服务器发送事件(因为浏览器支持真的很烂)。因此,我需要保持 HTTP 连接处于活动状态,并将分块数据发送回客户端。
然而,当你开始工作时,问题就会显现出来:
- 使用 XMLHttpRequest 是不可能的,因为 IE 在 3 时没有给
xhr.responseText
你xhr.readyState
。 - 隐藏
iframe
不会有用,因为当我将数据发送回客户端时,浏览器会显示加载器。 - 我尝试将 JavaScript 文件发送回客户端,每次都发送函数执行命令,但浏览器在完全加载之前不会执行 JavaScript。
但是,当我查看Lightstreamer 演示页面时,我看到它一点一点地将一个 JavaScript 文件发送回客户端,并且在每一步中,它都会发送一个对函数的调用,并且该函数只是被执行(我不能这样做部分)。似乎 Lightstreamer 使用 AJAX,因为请求只是显示在 Firebug 的控制台选项卡中,但它在 IE 中也像一个魅力。
我尝试使用他们在请求中设置的每个 HTTP 标头字段,但没有结果。我也尝试使用 HTTP Post 而不是 HTTP Get,但仍然没有结果。
我已经阅读了将近 20 篇关于如何实现彗星的文章,但似乎没有一篇文章能解决我遇到的问题:
- 如何让它跨浏览器?
- 当新数据从服务器到达时如何得到通知(我应该挂钩什么事件)?
- 如何使我的页面显示为完全加载给用户(如何实现它,以便浏览器不显示加载活动)?
有人可以帮忙吗?我认为应该有一个我不知道的小技巧或窍门将所有概念粘合在一起。有谁知道 lightstreamer 做了什么来克服这些问题?