通过 HTTP Streaming Comet,我的意思是“永久 iframe”/“永久 xhr”变体,在从服务器推送数据后不会关闭连接,而不是标准轮询和长轮询,后者关闭并重新发送新请求每个服务器推送事件。
我查看了 dojo.io.cometd 包,似乎它们只有轮询实现。我也找到了这个例子,但即使经过相当多的修改,它似乎也不能在 webkit 中工作(我让它在其他任何地方工作)。来自 safari 博客的这个公告似乎表明 xhr 是可能的,但我找不到任何代码或文档,也无法让它工作。
有谁知道在 Webkit 浏览器(Safari 和 Chrome)中实现 HTTP 流彗星的技术、脚本、库或演示?
更新
经过一番修改后,我发现需要做两件事才能让 http 流通过 XHR 在 Safari 中工作:
- 响应需要有一个 Content-Type: multipart/x-mixed-replace
- 在浏览器开始一致地显示更新之前,响应需要发送一些“噪音”字符。我假设这与填充一些内部缓冲区有关。
更新 2
我终于使用 iframe 技术让它在所有浏览器中工作。该解决方案需要注意的是,只有基于 WebKit 的浏览器才能接收 multipart/x-mixed-replace 标头。