0

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

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

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

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

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

4

2 回答 2

1

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

于 2010-06-18T04:46:11.313 回答
0

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

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

WebSocket 服务器倾向于为不支持原生 WebSocket 的浏览器提供模拟技术。在这里,您可以了解供应商之一 Kaazing 提供的仿真 [免责声明:我为Kaazing 工作]

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

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

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

于 2012-02-15T22:07:19.803 回答