【问题标题】:full duplex communication over the web w/o flash sockets无闪存套接字的网络全双工通信
【发布时间】:2010-06-18 04:29:35
【问题描述】:

我正在帮助开发的一个 Web 应用程序面临一个众所周知的问题:我们希望能够让用户知道可能随时发生的各种事件等,基本上是随机发生的,并更新他们的相应地查看。本质上,我们需要允许服务器将请求推送到单个客户端,而不是客户端向服务器请求。

我了解 WebSockets 是为了解决问题而努力的;但是,在对它们进行了一番查看之后,我了解到 a) 目前很少有 Web 浏览器提供本机 websocket 支持; b)为了解决这个问题,您可以使用闪存套接字或某种 AJAX 长轮询; c) 必须使用特殊的 websockets 服务器。

现在,我们希望提供不带 Flash 的服务。并且任何类型的服务器都必须具有某种负载平衡功能,或者至少有一些软件可以为它们进行负载平衡。

截至 2008 年,每个人都在说基于彗星的解决方案(例如 Bayeux)是解决这类情况的方法。然而,从那时起,各种协议似乎并没有投入太多的工作——这最终导致了这个问题。

巴约风味的彗星仍然是此类工作的合适工具吗?如果不是,是什么?

【问题讨论】:

    标签: javascript ajax comet websocket


    【解决方案1】:

    已证明有效的 Comet/Bayeux 替代方案是由 Jack Moffitt 开发的 XMPP 服务器(如 ejabberd 或 OpenFire)和 StropheJS 的组合(他的网站是 http://metajack.im/)。 XMPP 的局限性在于它只能传输文本,不能传输二进制负载。

    【讨论】:

      【解决方案2】:

      WebSockets 听起来像是解决您的问题的理想解决方案 - 我不建议使用 comet/bayeux 路径。 关于您的前两个问题:

      a) 目前很少有网络浏览器提供原生 websocket 支持

      WebSocket 服务器倾向于为不支持原生 WebSocket 的浏览器提供模拟技术。 Here you can read about the emulation 供应商之一,Kaazing 提供 [免责声明:我为 Kaazing] 工作。

      b) [WebSocket 仿真使用] flash 套接字或某种 AJAX 长轮询

      并非如此。做好仿真并不简单,但可以做到。长轮询几乎是最后的手段。例如,Kaazing 网关总是使用比长轮询更好的仿真。

      Kaazing 还提供 XMPP 版本的 WebSocket 网关,允许您直接在 JavaScript 环境中使用 XMPP 构建 HTML5 应用程序。 XMPP 的底层传输层是 WebSockets(本机或模拟)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-09-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-12-01
        • 2010-10-10
        • 2013-12-01
        相关资源
        最近更新 更多