当前位置: 首页 > 面试题库 >

如何实现Comet?

谢旭
2023-03-14
问题内容

我已经开发Web应用程序已有一段时间了,但是最近使用Comet服务器端推送技术对其进行了介绍,而我对该技术的理解还很不成熟。虽然链接http://www.zeitoun.net/articles/comet_and_php/start提供了两个使用PHP中无限循环的简单示例实现,但我想进一步了解上述方法的用途以及是否适合生产。专用彗星服务器如Meteor(http://meteorserver.org/),streamhub(http://www.stream-
hub.com/),freeliberator(http://www.freeliberator.com/index.php)有什么优势? )?

Comet服务器端推送与HTML5 Web套接字功能有何不同?

我的主要目标是构建协作式实时文档编辑工具的变体。


问题答案:

虽然链接http://www.zeitoun.net/articles/comet_and_php/start提供了两个使用PHP中无限循环的简单示例实现,但我想进一步了解上述方法的用途以及是否适合生产。

此解决方案是导致PHP和Comet / WebSockets无法扩展的概念的因素之一。

专用的彗星服务器如Meteor(http://meteorserver.org/),streamhub(http://www.stream-
hub.com/
),freeliberator(http://www.freeliberator.com/index.php)有什么优势)?

优点是这些解决方案是在考虑处理多个并发连接的思想的基础上构建的。他们还提供了一些库,这些库提供了其他功能,例如您可能需要的发布/订阅功能,因此必须自己实现。我曾在Caplin
Systems任职,后者开发了Liberator产品,这是一个经过高度调整的软件解决方案,旨在完全处理和解决该解决方案。

Comet服务器端推送与HTML5 Web套接字功能有何不同?

从这里得到的答案:

Comet是一个概括性术语,有许多“ Comet服务器”(见下文)在可能的情况下使用WebSockets作为传输机制。彗星服务器不仅使用AJAX,XHR
Long-Polling,Forever-Frame等,而且现在使用WebSockets并在需要时回退到其他传输机制。

以下是一些使用WebSocket的“ Comet服务器”:

  • StreamHub:http
    ://streamhub.blogspot.com/2010/12/html-5-web-sockets-arrives-in-
    streamhub.html
  • APE(“本地WebSocket”):http : //www.ape-
    project.org/
    * 卡普林解放者:http://www.caplin.com/caplin_liberator.php
  • 迁移:http :
    //migratory.ro/migratory-push-server.html
    * CometD:http
    :
    //cometdproject.dojotoolkit.org/documentation/2.x/howtos/websocket

我的主要目标是构建协作式实时文档编辑工具的变体。

我建议您不要尝试从头开始为Comet /
WebSockets实现解决方案。通过许多出色的解决方案,这是一个非常容易理解的问题。从头开始实施该解决方案仍然不简单。您需要解决的有趣问题是多个客户端之间的状态同步之一,因此这些现有的实时技术的妙处在于您可以使用它们并专注于构建应用程序。



 类似资料:
  • 问题内容: 我在同一HTML页面上同时使用了javascript和jquery代码。由于某种原因,jQuery库正在阻止我的本机javascript代码正常工作。 我找到了此页面:jQuery No Conflict,它表明您可以使用jquery.noConflict将$释放回javascript。但是,我不确定该怎么做? 具体来说,我不确定如何正确执行此操作?Jquery代码在哪里,JS代码在哪

  • 异步读取 新建一个  ExcelModelListener 监听类出来,并且 继承 AnalysisEventListener 类 package com.zh.oukele.listener; import com.alibaba.excel.context.AnalysisContext; import com.alibaba.excel.event.AnalysisEventListen

  • 我正在编写一个新的板条箱,我希望它能与一个特征的任何实现(在另一个板条箱中定义)一起使用。该特性看起来如下所示: 我有自己的类型,但有时我只想不加修改地转发底层错误。我的本能是这样定义一个类型: 我看过其他几个crate,它们似乎通过使其(或等价物)泛型于错误类型本身,而不是特性实现来处理这一问题。当然,这是可行的,但是: 除非我们有了固有的关联类型,否则它要冗长得多。我的实际上实现了多个特性,每

  • myapp e/AndroidRuntime:致命异常:main java.lang.ClassCastException:com.domain.myapp.MainActivity@422FB8F0必须实现OnFragmentInteractionListener 我找不到任何地方如何实现这个OnFragmentInteractionListener??甚至在android sdk文档中也找不到

  • 问题内容: 我想实施一个。 我不想只使用,因为我必须实现大量的方法。 可以避免吗? 更具体的,我怎么能流,以及例如: 问题答案: JDK的标准实现是内部类,您不能直接实例化它。 相反,你可以使用,以及各种1,2种静态工厂方法来创建默认实现的实例。 使用分离器可能是最强大的方法,因为它可以让您懒惰地提供对象,同时如果您的源可以分为多个块,则还可以实现有效的并行化。 此外,如果需要实现自己的 有状态中

  • 问题内容: IObjectTest是具有单个布尔测试(对象o)方法的接口 FilteringIterator是Iterator的实现,该实现使用另一个Iterator和一个IObjectTest实例初始化:new FilteringIterator(myIterator,myTest)。然后,您的FilteringIterator将允许在“ myIterator”上进行迭代,但是会跳过所有未通过“