2010-06-18 75 views
0

我正在帮助开发的Web应用程序面临一个众所周知的问题:我们希望能够让用户知道可能发生的各种事件等等在任何时候,基本上是随机的,并相应地更新他们的观点。基本上,我们需要允许服务器将请求推送到单个客户端,而不是客户端询问服务器。通过Web进行全双工通信W/O闪存插座

据我所知,WebSockets是努力解决这个问题;然而,在了解了一些内容后,我了解到a)目前仅有少数Web浏览器提供本地websocket支持; b)为了解决这个问题,你要么使用闪存套接字,要么使用某种AJAX长轮询; c)必须使用特殊的websockets服务器。

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

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

Bayeux味彗星仍然是这样的工作的正确工具?如果不是,那是什么?

回答

1

彗星/贝叶另一种已被证明是工作是杰克·莫菲特开发(他的网站是http://metajack.im/)的XMPP服务器,ejabberd或的Openfire和StropheJS的组合。 XMPP的限制是它只能传输文本而不是二进制载荷。

0

WebSockets听起来像是您的问题的理想解决方案 - 我不会推荐去彗星/ bayeux路径。 关于你的前两个顾虑:

一)极少数的网页浏览器目前提供原生的WebSocket支持

WebSocket的服务器往往提供不具有原生的WebSocket支持浏览器的仿真技术。 Here you can read about the emulation Kaazing提供的供应商之一[免责声明:我为Kaazing]工作。

B)[网页套接字仿效用途]闪光灯插座或某种AJAX 长轮询

不太的情况。做好仿真并不简单,但可以完成。长期投票几乎是最后的手段。例如,Kaazing Gateway总是比长时间轮询使用更好的仿真。

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