【问题标题】:websockets: do they shared the connection?websockets:他们共享连接吗?
【发布时间】:2011-06-02 00:59:35
【问题描述】:

如果我请求多个资源,它们是否共享连接?所以如果我有这些要求:

  • ws://someserver.com/path/somedata1
  • ws://someserver.com/path/somedata2
  • ws://somsserver.com/anotherpath/someotherdata

从我目前阅读的内容来看,我必须创建 3 个 websocket 才能从这些 url 获取数据。我见过的所有示例都打开连接、获取数据并关闭连接。但是,如果我创建了 3 个 websocket,它们(在幕后)是否共享到 someserver.com 的单个连接?还是它们是 3 个独立的连接?意思是链接的每一侧都有 3 个插槽,等等。

【问题讨论】:

  • 如果您想确认@kanaka 在他的回答中所说的话,您可以使用WireShark 之类的东西来检查已建立的 TCP 连接。

标签: tcp websocket


【解决方案1】:

工作组正在讨论如何将 websockets 连接自动复用到同一服务器,但没有支持此功能的现有实现,因此如果您打开三个 websockets 连接,您将在后台获得三个 TCP 套接字连接。

但是,如果您同时控制客户端和服务器,那么您的应用程序可能没有理由为单独的 URL 打开三个单独的连接。只需打开一个连接,然后在您的应用程序级协议中就可以指定您想要的资源。此外,WebSockets 相对于 HTTP 连接的一大优势是连接保持打开状态,并且是全双工双向和基于消息的。当前的 WebSocket 应用程序通常选择来回发送 JSON 消息,但是一旦建立了 WebSocket 连接,您就可以来回发送您想要的任何内容(目前仅限于您可以编码为 UTF-8 字符串的内容,但原始二进制文件将在未来)。

作为 WebSocket 连接一部分的 URL 实际上只是 WebSocket 握手的另一部分。如果服务器配置是升级到 WebSockets 服务器的连接的网络服务器,则 URL 可用于选择将连接传递到哪个 WebSockets 服务器。但是,如果您有一个原始 WebSockets 服务器来响应连接,那么 URL 只是握手中的另一条数据,服务器可以决定对 URL 做任何事情。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-18
    • 1970-01-01
    • 2011-12-27
    • 2014-03-25
    • 2021-12-16
    • 1970-01-01
    相关资源
    最近更新 更多