我正在实施一个需要实时更新的系统。我一直在研究某些场景,其中包括彗星。实现这一点我看不出这与传统的长轮询有何不同。
在这两种情况下,您都必须发送请求,然后服务器发送回响应。在浏览器中,您解释响应,然后开始一个新请求。
那么,如果在这两种情况下我都需要打开和关闭连接,我为什么要使用彗星。
我正在实施一个需要实时更新的系统。我一直在研究某些场景,其中包括彗星。实现这一点我看不出这与传统的长轮询有何不同。
在这两种情况下,您都必须发送请求,然后服务器发送回响应。在浏览器中,您解释响应,然后开始一个新请求。
那么,如果在这两种情况下我都需要打开和关闭连接,我为什么要使用彗星。
某些Comet技术不需要您不断打开新请求(例如,分块隐藏 iframe),其想法是保持请求打开并让服务器定期发送数据。但是,如果没有(正如一位维基百科贡献者巧妙地指出的那样)负面影响,这在所有主要浏览器中都不能很好地工作,因此需要长轮询技术。链接文章中的更多内容。
正如 Marcelo 所提到的,Comet通常用于描述“HTTP 流”的任何技术,包括长轮询。在某些情况下,Comet 也可能更具体地指代巴约协议。例如,jQuery Comet插件就是这个协议。来自巴约网站:
从服务器到 Web 客户端的异步消息传递通常被描述为服务器推送。服务器推送技术与 Ajax Web 应用程序的结合称为 Comet。CometD 是 Dojo 基金会的一个项目,旨在以多种编程语言提供 Bayeux 协议的多种实现。
Bayeux 尝试使用 Comet 技术标准化发布/订阅协议,允许客户端和服务器端库的供应商创建可互操作的组件。
Comet 是各种异步更新技术的总称,长轮询只是其中之一。
如果你想推或拉,你可以使用JPE。