4

我正在为基于 Java 的移动 Web 应用程序编写后端,我想知道就可扩展性和易用性而言,使用 WebSockets 与 Comet 等长轮询解决方案相关的优缺点是什么。另一种选择也是使用 TCP 实现我自己的解决方案。根据我的阅读,您似乎需要在专用服务器上运行长轮询解决方案,因为当您开始与大量用户打交道时,它们在 Tomcat/Jetty 中运行不佳。WebSockets 听起来可以更好地扩展。在 Comet 上使用 Websockets 是否有任何缺点,或者我应该使用 TCP 连接使用我自己的解决方案吗?我正在寻找使用最少流量的选项。

4

1 回答 1

5

我想这取决于您的用例和对学习新事物的容忍度,但可以肯定的是,由于许多原因,沿着使用 WebSocket API 进行通信甚至 SSE 的路径会比传统的长轮询/彗星解决方案更好 - 一个您提到的 - 可扩展性,还有带宽利用率和延迟。同样重要的是要理解 WebSocket 之于 Web 就像 TCP 之于桌面(例如套接字)。在桌面解决方案中,您不必针对 TCP 进行编码,您可以使用支持传输协议(如 STOMP 或 XMPP over TCP)的客户端库。使用 WebSocket 时您也这样做,选择一个服务器与例如 XMPP 服务器进行通信,并选择一个 XMPP 客户端库通过 WebSockets 与服务器进行通信。

您可以在此处查看我们的示例,我们有您可以在此处阅读的文档

需要注意的是浏览器对 HTML5 WebSocket 的采用——目前在 Chrome 和 Safari 中,很快将在 FF 和 Opera 中推出。我们已经解决了这个问题,但如果您计划构建自己的服务器,则必须为旧浏览器创建一个备用解决方案。

于 2010-07-30T17:01:18.947 回答