【发布时间】:2011-01-27 06:18:16
【问题描述】:
【问题讨论】:
标签: javascript flash streaming comet long-polling
【问题讨论】:
标签: javascript flash streaming comet long-polling
目前,长轮询可能是最好的解决方案。许多大牌网站都有长轮询实现,包括 Facebook、Google 和 eBay。不是每个人的浏览器都安装/启用了 Flash。将来Web Sockets 可能会为我们做更轻松的工作。
更新:在撰写本文时,WebSocket API 已在最新的 WebKit (Chrome/Safari) 和 Firefox 4 beta 中实现。还有一个带有 API 实现的 Opera available for download 的公共快照构建。这意味着测试 API 是广泛可用的。如需更多信息,请参阅this answer。
【讨论】:
我不认为长轮询是最有效的 Comet 方法。无论如何,它会在得到响应后发送新的 HTTP 请求。与 HTTP 流相比,它需要更多的 HTTP 请求。
但是,长轮询可能比 HTTP 流更可靠且更容易实现。根据此article in Google Code,如果中间 HTTP 代理缓冲内容,则 HTTP 流可能无法正常工作。
有趣的是,GMail 不使用长轮询。在 Http sniffer 的帮助下,很明显它使用了 Comet 的 HTTP 流。
【讨论】:
所有不同的方法都有不同的优缺点,我不是这方面的专家,这就是为什么我会建议你避免做出选择,避免每种方法的开发和调整方法涉及,避免未来可用技术的变化(即随着 HTML5 网络套接字的到来),使用一个抽象使用的传输方法的库,并根据客户端功能选择最佳方法:
这个奇妙的库让创建实时应用程序变得异常简单!并且有各种服务器端实现:Python (Tornado)、Java、Google GO、Rack (Ruby),除了 Node.js 中的主流实现(服务器端 JavaScript)
【讨论】: