通过网络进行全双工通信,无闪存插座

时间:2010-06-18 04:29:36

标签: javascript ajax comet websocket

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

我知道WebSockets是解决问题的努力;但是,经过一番调查后,我了解到a)很少有网络浏览器目前提供原生的websocket支持; b)要解决这个问题,你可以使用闪存套接字或某种AJAX长轮询; c)必须使用特殊的websockets服务器。

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

截至2008年,每个人都在说基于Comet的解决方案(例如Bayeux)是这种情况的必由之路。然而,从那时起,各种协议似乎没有做太多工作 - 这导致(最终)问题。

Bayeux风味的Comet仍然是这类工作的合适工具吗?如果没有,那是什么?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

WebSockets听起来像是你问题的理想解决方案 - 我不建议你去彗星/拜耳路径。 关于你的前两个问题:

  

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

WebSocket服务器倾向于为没有本机WebSocket支持的浏览器提供仿真技术。 Here you can read about the emulation其中一家供应商,Kaazing提供[免责声明:我为Kaazing]工作。

  

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

情况并非如此。做好仿真并不简单,但可以做到。长期投票几乎是最后的选择。例如,Kaazing Gateway总是使用比长轮询更好的仿真。

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