“长轮询”是创建Web实时应用程序的最有效方式吗?

时间:2010-03-13 21:39:15

标签: javascript flash streaming comet long-polling

我想创建一个这样的应用程序:

http://collabedit.com/

创建此实时应用程序的最有效方法是什么?

闪光?长期民意调查? Http Streaming?或其他什么?

谢谢;)

3 个答案:

答案 0 :(得分:14)

目前,长时间轮询可能是最好的解决方案。许多知名网站都有长期的民意调查实施,包括Facebook,谷歌和eBay。并非所有人都在其浏览器中安装/启用Flash。将来Web Sockets可能会为我们做更轻松的工作。

更新:在撰写本文时,WebSocket API已在最新的WebKit(Chrome / Safari)和Firefox 4测试版中实施。还有一个Opera available for download的公共快照构建,其中包含API的实现。这意味着测试API可以广泛使用。有关详细信息,请参阅this answer

答案 1 :(得分:4)

所有不同的方法都有不同的优点和缺点,我不是差异的专家,这就是为什么我会建议你避免做出选择,避免每个方法的开发和调整方法涉及,避免未来可用技术的变化(即HTML5网络套接字到来),使用抽象使用的传输方法的库,并根据客户端功能选择最佳方法:

http://socket.io/

这个精彩的图书馆让创建实时应用程序非常简单!并且有各种服务器端实现:Python(Tornado),Java,Google GO,Rack(Ruby),以及Node.js中的主流实现(服务器端JavaScript)

答案 2 :(得分:1)

我不认为长轮询是做Comet的最有效方法。无论如何,它在获得响应后发送新的HTTP请求。它比HTTP流媒体花费更多的额外HTTP请求。

但是,长轮询可能比HTTP流更可靠,更容易实现。根据此article in Google Code,如果中间HTTP代理缓冲内容,则HTTP流可能不起作用。

有趣的是,GMail不使用长轮询。在Http嗅探器的帮助下,很明显它为Comet使用HTTP流。