多个websocket连接

Chr*_*ian 37 javascript client websocket

从同一客户端到同一服务器有两个不同的websocket连接有什么好处吗?对我而言,这似乎是一个糟糕的设计选择,但有什么原因/它应该更好地解决?

kan*_*aka 63

可能想要这样做有几个原因,但它们可能并不常见(至少现在还不是):

  • 您有发送/接收的加密和未加密数据(例如,某些数据体积庞大但不敏感).
  • 您同时拥有流数据和延迟敏感数据:想象一下偶尔会在游戏中播放视频的互动游戏.您不希望大型媒体流延迟接收对延迟敏感的正常游戏消息.
  • 你有文本(例如JSON控制消息)和二进制数据(类型化数组或blob),并且不想为添加自己的协议层而烦恼,因为WebSockets已经为你做了这件事.
  • 您支持多个WebSocket子协议(URI之后的可选设置),并且页面要访问多个(每个WebSocket连接仅限于一个子协议).
  • 您在同一个Web服务器和端口后面有几个不同的WebSocket服务.客户端选择每个连接的方式可能取决于URI路径,URI方案(ws或wss),子协议,甚至可能是客户端到服务器的第一条消息.

我确信还有其他原因,但这就是我能想到的全部.


lex*_*x82 9

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

假设您通过 REST API 在

http://myserver/api/some-elements
Run Code Online (Sandbox Code Playgroud)

您可以使用这样的套接字 url 订阅单个元素的更新:

ws://myserver/api/some-elements/42/updates
Run Code Online (Sandbox Code Playgroud)

当然,有人会争辩说这不适用于复杂页面。但是,对于小而简单的应用程序,它可能会让您的生活更轻松。