【问题标题】:Multiple websocket connections多个 websocket 连接
【发布时间】:2012-03-04 02:44:20
【问题描述】:

从同一个客户端有两个不同的 websocket 连接到同一个服务器有什么好处?对我来说,这似乎是一个糟糕的设计选择,但有什么理由为什么/在哪里应该做得更好?

【问题讨论】:

  • REQUEST_URI 也一样吗?
  • @Shiplu 嗯。不应该通过 uri 传达信息,因为它只完成一次。在这种情况下,假设 yes
  • 能否请接近投票者解释原因? 为什么我的问题没有建设性?

标签: javascript client websocket


【解决方案1】:

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

假设您通过 REST API 在

http://myserver/api/some-elements

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

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

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

【讨论】:

    【解决方案2】:

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

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

    我确定还有其他原因,但我能想到的就是这些。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-01
      • 2020-05-22
      • 2021-12-22
      • 1970-01-01
      相关资源
      最近更新 更多