多个websocket连接

时间:2012-02-12 10:08:33

标签: javascript client websocket

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

3 个答案:

答案 0 :(得分:61)

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

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

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

答案 1 :(得分:2)

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

假设您通过REST API

获取了元素集合
http://myserver/api/some-elements

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

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

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

答案 2 :(得分:0)

我目前正在寻找与同一websocket有两个连接的解决方案。我的理由:

  • 我在QUnit中编写了一个测试用例,我想模拟多个客户端并检查不同的客户端是否有正确的响应