websockets:他们共享连接吗?

时间:2011-06-02 00:59:35

标签: tcp websocket

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

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

从我到目前为止所读到的内容,我将不得不创建3个websockets来从这些网址获取数据。我见过的所有示例都打开了连接,获取数据并关闭连接。但是,如果我创建了3个websockets,它们(在封面下)是否与someserver.com共享一个连接?或者它们是3个独立的连接?意思是链接两侧的3个插座,等等。

1 个答案:

答案 0 :(得分:4)

工作组正在讨论如何将websockets连接自动复用到同一服务器,但是没有现有的实现支持,所以如果打开三个websockets连接,你将获得三个TCP套接字连接。

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

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