长轮询和使用Comet之间有区别吗?

时间:2010-04-03 09:46:33

标签: javascript comet long-polling

我正在实施一个需要实时更新的系统。我一直在寻找某些场景,其中就是彗星。实现这一点,我认为这与传统的长轮询不同。

在这两种情况下,您都必须发送请求,然后服务器发回响应。在浏览器中解释响应,然后开始新请求。

那么为什么我要使用彗星,如果在这两种情况下我都需要打开和关闭连接。

4 个答案:

答案 0 :(得分:12)

某些Comet技术要求您不断打开新请求(例如,分块隐藏的iframe),这个想法是保持请求打开并定期让服务器发送数据。但是,如果没有(作为一个维基百科贡献者精心设置的)负面副作用,这在所有主流浏览器中都不能很好地工作,因此长轮询技术。更多链接文章。

答案 1 :(得分:11)

如Marcelo所述,Comet通常用于描述“HTTP流”的任何技术,包括长轮询。在某些情况下,Comet也可能更具体地提到Bayeux Protocol。例如,jQuery Comet插件属于此协议。来自Bayeux网站:

  

从服务器向Web客户端传递异步消息通常被称为服务器推送。   服务器推送技术与Ajax Web应用程序的结合称为Comet。   CometD是Dojo Foundation的一个项目,它以多种编程语言提供Bayeux协议的多种实现。

Bayeux尝试使用Comet技术标准化发布/订阅协议,允许客户端和服务器端库的供应商创建可互操作的组件。

答案 2 :(得分:7)

Comet是各种异步更新技术的总称,其中长轮询只是一种。

答案 3 :(得分:0)

如果您想推动而不是拉动,可以使用JPE