服务器推送:彗星vs猿?

我读过一些关于彗星和APE的内容。

哪一个更好? 我希望用户看到其他用户更新的内容。 像Google Wave一样。

在彗星中,有两个版本:iframe与传统的ajax。 有什么不同,哪个更好。 我不太明白。

谢谢。

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

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

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

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

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

APE = Comet技术的实现。

你可以认为彗星是一种特定的汽车制造而APE是模型。

也可以看看:

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

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

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

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

顺便说一下,我建议你为Comet-streams(或频道)使用独立的网络服务器。

PS我喜欢APE。

Etherpad.com,超快速实时文档共享工具,用于提供近乎实时的其他编辑协作屏幕更新。 制造以太网(AppJet)的公司刚刚被Google收购,以便在Google Wave上工作

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

和http://code.google.com/p/etherpad/ (开源etherpad)一起查看其实现。

我投票支持彗星是因为etherpad的商业成功以及使用彗星的google wave实现。

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

APE不仅仅是Comet的实现吗? 这就是产品页面上的内容。

我想你想比较基于IFrame的技术和基于Ajax(XMLHttp)的技术。

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

  1. 向服务器发出请求
  2. 在获得响应时读取响应并发出另一个请求

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

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

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

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

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