8

我读过一些关于彗星和猿的知识。

哪一个更好?我希望用户看到其他用户更新的内容。就像谷歌波浪一样。

在 Comet 中,有 2 个版本:iframe 与传统的 ajax。有什么区别,哪个更好。我不太明白。

谢谢。

4

8 回答 8

16

Comet 是一组可用于开发实时应用程序的技术。您有两个主要实现:流式传输和长轮询。

在常规的 http 请求中,用户将请求发送到服务器,接收数据(html、脚本等)并关闭连接 - 故事结束。在流式传输中,客户端或服务器永远不会关闭连接,双方共享一个连接。

在长轮询中,您有一个等待响应的循环连接。基本上,浏览器向服务器发送请求并坐在那里等待服务器响应(服务器仅在他为客户端提供新数据时才响应),然后连接关闭,由浏览器重新打开连接,并且循环重复:) 在两者中,这是最常用的。

浏览器中的 Comet 通常需要一个针对大量长期 HTTP 连接进行优化的 Web 服务器,以及一个与 Comet 服务器通信的 JavaScript 客户端。所以 Ape 是一个可安装的服务器,而 Comet 是它所基于的范例。在这里你有一个彗星实现的列表: http: //cometdaily.com/maturity.html

于 2010-03-18T06:30:07.243 回答
7

Comet = 技术的伞形术语,也称为“反向 ajax”或“长轮询”

APE = Comet 技术的实现。

你可以认为 Comet 是某种汽车品牌,而 APE 是模型。

也可以看看:

http://en.wikipedia.org/wiki/Comet_%28programming%29

http://www.ape-project.org/ajax-push.html

于 2010-01-30T14:00:04.753 回答
3

Comet 是一种技术,APE 是众多实现之一。iframe 与传统的 ajax 怎么样?在任何可以使用的地方使用 HTML5 WebSockets。

现在所有现代浏览器都使用 XMLHttpRequest 来处理 ajax 请求(客户端到服务器,后端和后端)。但有时 JS 应用程序通过 iframe 发送文件并且没问题。并非所有 XMLHttpRequests 的实现都支持多部分数据传输(Chrome 和现代 FF afaik)。WebSockets 是专门为类似 Comet 的技术而创建的(当客户端只打开一个连接并且 Web 服务器通过打开的流或 WebSocket 将一些数据推送到客户端时),所以如果可以的话,请使用它。

顺便说一句,我建议您为彗星流(或频道)使用独立的网络服务器。

PS我喜欢猿。

于 2011-06-07T17:39:23.280 回答
2

Etherpad.com 是一款超快速的实时文档共享工具,它使用 Comet 提供来自其他编辑者的协作的近乎实时的屏幕更新。制造 etherpad (AppJet) 的公司刚刚被 Google 收购,以在 Google Wave 上工作

查看http://etherpad.com/ep/about/faq

http://code.google.com/p/etherpad/(开源 etherpad)查看它们的实现。

由于 etherpad 的商业成功和使用 comet 的 google wave 实现,我投票给了彗星。

于 2010-01-02T13:04:57.313 回答
2

看看WebSockets。Chrome 和更新的 Firefox 已经支持它。当您在其他浏览器上确实需要它时,您可以回退到彗星。

于 2010-01-03T18:57:40.357 回答
1

APE 不只是 Comet 的一个实现吗?这就是产品页面上所说的。

于 2010-01-02T16:51:25.547 回答
1

我认为您想将基于 IFrame 的技术与基于 Ajax (XMLHttp) 的技术进行比较。

我认为主要区别在于,在浏览器接收到整个响应之前,您无法读取 AJAX 请求的响应内容。这意味着,为了模拟流式传输,您必须执行以下操作:

  1. 向服务器发出请求
  2. 收到响应后,请阅读响应并发出另一个请求

如果还没有任何东西要返回,服务器可以保留请求。

另一方面,基于 IFrame 的解决方案可以返回多个script标签以响应单个请求。在(浏览器或服务器)请求超时之前,无需发送另一个请求。

于 2010-09-15T13:47:46.910 回答
1

APE 是 Comet 的一个实现。它提供了一个非阻塞的 IO 服务器和 JS 客户端库来实现一个发布/订阅消息系统。

APE 服务器本身可以使用服务器端 javascript 进行编程。服务器端代码(例如 PHP/Ruby/whatever)可以通过向 APE 服务器发出“命令”来通过 APE 广播数据。

连接的客户端通过侦听 'Raws' 来接收此数据;这是从 APE 服务器发送到客户端的事件和数据。

于 2011-04-13T14:45:17.490 回答