代码之家  ›  专栏  ›  技术社区  ›  Aaron Yodaiken

全双工网络通信,不带闪存插座

  •  0
  • Aaron Yodaiken  · 技术社区  · 15 年前

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

    我理解WebSockets是解决问题的一种努力;但是,在仔细研究了它们之后,我了解到a)目前很少有Web浏览器提供本机WebSocket支持;b)为了解决这个问题,您要么使用Flash套接字,要么使用某种Ajax长轮询;c)必须使用一个特殊的WebSockets服务器。

    现在,我们想提供不带闪存的服务。任何类型的服务器都必须具有某种负载平衡功能,或者至少是一些 可以 为他们做负载平衡。

    截至2008年,所有人都说基于Comet的解决方案(如Bayeux)是应对此类情况的方法。然而,从那时起,各种协议似乎没有投入太多的工作,这导致了(最后)这个问题。

    像这样的工作,Bayeux口味的彗星仍然是合适的工具吗?如果没有,是什么?

    2 回复  |  直到 13 年前
        1
  •  1
  •   Kevin Le - Khnle    15 年前

    Comet/Bayeux的另一个替代方案是结合了一个XMPP服务器,比如EJabberd或OpenFire和由JackMoffitt开发的strophejs(他的网站是 http://metajack.im/ )XMPP的限制是它只能传输文本,不能传输二进制有效负载。

        2
  •  0
  •   Peter Moskovits    13 年前

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

    a)目前很少有Web浏览器提供本机WebSocket支持

    WebSocket服务器倾向于为没有本机WebSocket支持的浏览器提供模拟技术。 Here you can read about the emulation Kaazing提供的供应商之一[免责声明:我为 Kaazing] .

    b)[WebSocket仿真使用]Flash套接字或某种Ajax 长轮询方式

    不完全是这样。做好模拟并不简单,但它是可以做到的。长期投票几乎是最后的手段。例如,Kaazing网关总是使用比长轮询更好的模拟。

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