我正在实施一个需要实时更新的系统。我一直在寻找某些场景,其中就是彗星。实现这一点,我认为这与传统的长轮询不同。
在这两种情况下,您都必须发送请求,然后服务器发回响应。在浏览器中解释响应,然后开始新请求。
那么为什么我要使用彗星,如果在这两种情况下我都需要打开和关闭连接。
答案 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。