【问题标题】:Server push: comet vs ape?服务器推送:彗星VS猿?
【发布时间】:2010-12-31 18:38:06
【问题描述】:

我读过一些关于彗星和猿类的文章。

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

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

谢谢。

【问题讨论】:

    标签: javascript jquery ajax comet push


    【解决方案1】:

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

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

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

    附:我喜欢APE。

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        【解决方案3】:

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

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

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

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

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

        【讨论】:

          【解决方案4】:

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

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

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

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

          【讨论】:

            【解决方案5】:

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

            APE = Comet 技术的实现。

            您可以认为 Comet 是特定品牌的汽车,而 APE 是模型。

            另见:

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

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

            【讨论】:

              【解决方案6】:

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

              【讨论】:

                【解决方案7】:

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

                【讨论】:

                • 彗星到底是什么? APE 和 Etherpad 的技术? Comet = 反向 ajax?
                【解决方案8】:

                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 实现,我投票支持 comet。

                【讨论】:

                • 但是你还没有回答这个问题。 Comet iframe 和他们网站上的传统 ajax 有什么区别?
                • 我没有尝试回答你提出的问题,我知道这是典型的恐怖,我只是想让你知道谷歌和像 etherpad 这样的聪明人选择了彗星,所以一定有什么那个。
                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2011-12-07
                • 2010-11-24
                • 1970-01-01
                • 2012-01-04
                • 2010-11-07
                • 1970-01-01
                相关资源
                最近更新 更多