gpt4 book ai didi

node.js - 我应该使用 WebSocket 还是普通的 TCP 套接字?

转载 作者:可可西里 更新时间:2023-11-01 02:44:27 28 4
gpt4 key购买 nike

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

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

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

如何做出这个决定?

最佳答案

这取决于您的确切用例:

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

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

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

关于node.js - 我应该使用 WebSocket 还是普通的 TCP 套接字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35221438/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com