Websockets:它们共享连接吗?

4
如果我有多个资源的请求,它们会共享连接吗?如果我有这些请求:
  • ws://someserver.com/path/somedata1
  • ws://someserver.com/path/somedata2
  • ws://somsserver.com/anotherpath/someotherdata
从我目前所了解的情况来看,我需要创建3个WebSockets才能从这些URL获取数据。所有我看到的例子都是打开连接,获取数据并关闭连接。但是如果我已经创建了3个WebSockets,它们(在内部)是否共享与someserver.com的单个连接?还是它们是3个独立的连接?意思是连接的每一侧都有3个sockets等。

如果你想确认@kanaka在他的回答中所说的内容,你可以使用类似WireShark这样的工具来检查已建立的TCP连接。 - leggetter
1个回答

4
工作组正在讨论如何自动复用到同一服务器的WebSockets连接,但目前还没有支持此功能的现有实现。因此,如果您打开三个WebSockets连接,则在底层将会得到三个TCP套接字连接。
然而,如果您控制客户端和服务器,则可能没有理由让应用程序打开三个不同的连接到不同的URL。只需打开一个单一的连接,然后在应用程序级别协议中指定所需资源的方式即可。另外,WebSockets相对于HTTP连接的一个重要优势是连接保持打开状态,并且是全双工的双向消息传递。通常,当前的WebSocket应用程序选择来回发送JSON消息,但一旦建立了WebSocket连接,您可以发送任何您想要的内容(目前仅限于您可以编码为UTF-8字符串的内容,但未来将支持原始二进制)。
WebSocket连接的URL实际上只是WebSocket握手的另一部分。如果服务器配置是将连接升级到WebSocket服务器的Web服务器,则URL可用于选择要将连接传递给哪个WebSocket服务器。但是,如果您有一个原始的WebSocket服务器来响应连接,则URL只是握手中的另一个数据,并且服务器可以决定对URL进行任何操作。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接