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

Sai*_*han 17 javascript comet long-polling

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

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

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

T.J*_*der 12

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


Jør*_*ode 11

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

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

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


Mar*_*tos 7

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