可以进行客户端HTTP推送吗?

时间:2009-06-26 23:49:40

标签: javascript ajax http streaming comet

与服务器端推送相反,也称为Comet。我想知道是否可以使用长期的HTTP连接将信息推送到服务器。

与简单的XHR不同,连接将保持活动状态,并且当用户完成操作等时,数据将定期流式传输到服务器。

使用标准技术我不相​​信这是可能的,但我愿意接受有关可能的开发或巧妙实现这一目标的建议。目的是完成向服务器的低延迟数据推送,以实现快速有效的单向流。

由于服务跨域策略或获取java签名的麻烦,我对使用flash / java桥接器的套接字实现不感兴趣。欢迎使用无需额外依赖性的原始黑客。优选地,解决方案将使用javascript完成。

4 个答案:

答案 0 :(得分:1)

这可以通过以下几种方式之一完成......

您可以keep a connection open进行POST,或者我确信可以进行多部分POST。

答案 1 :(得分:1)

我曾经看过http://orbited.org/

背后的人的谈话

这是一个js库,它使用标准技术在服务器和客户端之间保持连接打开,你可以推送它。

答案 2 :(得分:1)

这样做: http://www.speich.net/projects/programming/firebug-testing.php

看看这个:http://en.wikipedia.org/wiki/Comet_(programming)) 和谷歌四处寻找'x-mixed-replace'

在Firefox上进行XHR。必须直接使用它或抓住XHR对象来设置有趣的字段。 xhr.multipart = true并使用onload处理程序,而不是onreadystatechange。

服务器应返回mime类型为“multipart / x-mixed-replace”的数据。加上一个多部分分隔符。 flush以获取每个齐射的最后一个字节。我仍然试图让它顺利进行。

Safari(〜= chrome)可以做到,但细节不同。在readyState = 3时调用你的处理程序,而不是4。每次新文本都附加到resultText时,并不是全部。无法在IE上使用任何东西。

答案 3 :(得分:0)

如果您正在寻找双向浏览器 - 服务器通信,那么您可能正在寻找WebSockets。请参阅维基百科文章底部的可用实现。