使用 websockets 时,我应该为每个不同的任务打开一个新的 websocket 连接吗?或者我应该在一个连接中做所有事情吗?

When working with websockets should I open a new websocket connection for every different task? Or should I do everything within one connection?

我在我的 React 应用程序中使用 socket.io,并且我有一个后端 expressJS 服务器。我的问题是,我应该分别为每个功能打开一个新的 websocket 连接,还是应该只为多个功能使用一个连接?例如,我有一个聊天组件,用户可以在其中相互发送聊天消息,但我也想为通知侦听器和在线状态创建一个网络套接字。我想知道是不为此打开新连接并保持独立,还是只建立一个连接(这有望节省服务器资源)并对那个连接进行不同的调用?

Socket.IO 具有 namespaces 的概念,您可以使用它来区分应用程序的不同方面。

在内部,它实际上会为所有命名空间共享一个 WebSocket(假设它不使用 HTTP 长轮询)。

除了让您的服务器执行更多工作之外,新的 WebSocket 没有其他问题,因为还有另一个套接字需要处理和跟踪。