WebSockets、长轮询和TCP的可扩展性/易用性比较

4

我正在为一款基于Java的移动Web应用程序编写后端,就可扩展性和易用性而言,使用WebSockets与像Comet这样的长轮询解决方案相比,有哪些利弊。另一个选择是使用TCP实现自己的解决方案。从我所了解的情况来看,当你开始处理大量用户时,需要在专用服务器上运行长轮询解决方案,因为它们在Tomcat / Jetty中运行不佳。WebSockets似乎具有更好的可扩展性。但是,相比Comet,使用Websockets是否存在任何缺点,还是我应该采用自己使用TCP连接的解决方案?我正在寻找使用最少流量的选项。

1个回答

5
我想这取决于您的用例和学习新事物的容忍度,但是使用WebSocket API进行通信或者使用SSE,肯定比传统的长轮询/Comet解决方案更好,原因有很多,其中之一就是您提到的可扩展性,还包括带宽利用率和延迟。同时,理解WebSocket就像TCP对于桌面应用程序一样重要,例如套接字。在桌面应用程序中,您不一定针对TCP编码,而是使用支持传输协议(如STOMP或XMPP over TCP)的客户端库。当使用WebSocket时,也是同样的情况,选择一个服务器进行通信,例如XMPP服务器,并选择一个XMPP客户端库来通过WebSocket与服务器通信。
您可以在此处查看我们的示例,并且我们有文档供您阅读
需要注意的是浏览器对HTML5 WebSocket的采用情况 - 目前在Chrome和Safari中,并即将在FF和Opera中推出。我们已经解决了这个问题,但是如果您计划构建自己的服务器,则必须为旧版浏览器创建备用解决方案。

此问题中的外部引用现已失效。 - jfriend00

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接