多个 websocket 连接

问题描述 投票:0回答:3

从同一个客户端到同一服务器有两个不同的 websocket 连接有什么优点吗?对我来说,这似乎是一个糟糕的设计选择,但是有什么理由/地方它应该表现得更好吗?

javascript client websocket
3个回答
94
投票

您可能想要这样做的原因有多种,但它们可能不太常见(至少目前还不是):

    您正在发送/接收加密和未加密的数据(例如,某些数据很大但不敏感)。
  • 您同时拥有流数据和延迟敏感数据:想象一个交互式游戏,偶尔会在游戏内播放流视频。您不希望大型媒体流延迟接收对延迟敏感的正常游戏消息。
  • 您同时拥有文本(例如 JSON 控制消息)和二进制数据(类型化数组或 blob),并且不想费心添加自己的协议层来区分,因为 WebSockets 已经为您做到了这一点。
  • 您有多个支持的 WebSocket 子协议(URI 后的可选设置),并且页面想要访问多个(每个 WebSocket 连接仅限于一个子协议)。
  • 同一个 Web 服务器和端口后面有多个不同的 WebSocket 服务。客户端为每个连接选择的方式可能取决于 URI 路径、URI 方案(ws 或 wss)、子协议,甚至可能取决于从客户端到服务器的第一条消息。
我确信还有其他原因,但这就是我能想到的全部原因。


13
投票
我发现,当您仅订阅服务器管理的某些对象的更新时,它可以使客户端逻辑变得更加简单。您无需为单个通道设计自定义订阅协议,只需为每个元素打开一个套接字即可。

假设您通过 REST API 获取了元素集合

http://myserver/api/some-elements

您可以使用套接字 URL 订阅单个元素的更新,如下所示:

ws://myserver/api/some-elements/42/updates

当然,有人可能会说这不适用于复杂的页面。然而,对于小型和简单的应用程序来说,它可能会让您的生活变得更加轻松。


© www.soinside.com 2019 - 2024. All rights reserved.