我应该使用WebSocket还是普通的TCP Socket?

use*_*741 1 sockets tcp websocket node.js

我正在开发一个具有用Java编写的桌面客户端的Web应用程序.我正在使用WebSockets在NodeJS服务器和Web客户端之间进行通信.

我正在尝试决定是使用WebSocket还是普通的TCP套接字在NodeJS服务器和桌面客户端之间进行通信.

据我了解,使用WebSocket会更容易,但重量也会更轻一些.

如何做出这个决定?

Ste*_*ich 6

这取决于您的确切用例:

  • 首先建立HTTP连接,然后将其升级到WebSocket协议,即可建立WebSockets.因此,交换第一个消息所需的开销大大高于简单的套接字.但是如果你只是保持连接打开并通过一个已建立的套接字交换所有消息,那么这并不重要.
  • 由于屏蔽,性能开销很小.但这些主要是简单的计算(XOR),因此它们并不重要.
  • 由于框架,它需要更多的带宽.但这不应该太重要.
  • 从积极的方面来说,它与现有的防火墙和代理一起工作得更好(但并不总是完美),因此它更容易集成到现有的基础架构中.您也可以使用TLS更轻松地使用它,因为这只是在HTTPS内部而不是在HTTP内部进行WebSocket升级.

因此,如果必须使用防火墙和代理集成到现有基础架构中,那么WebSockets可能是更好的选择.如果您的应用程序性能很高并且需要每一点带宽,处理器时间和最低(初始)延迟,那么普通套接字就更好了.

除此之外,如果延迟确实是一个问题(如实时音频),那么最好不要使用任何基于TCP的协议,如TCP套接字或WebSockets.在这种情况下,最好使用UDP并处理应用程序内潜在的数据包丢失,重新排序和重复.