如果我有多个资源的请求,它们是否共享连接?因此,如果我有这些请求:
- ws://someserver.com/path/somedata1
- ws://someserver.com/path/somedata2
- ws://somserver.com/anotherpath/someotherdata
根据我目前所读到的内容,我必须创建3个websocket才能从这些url中获取数据。我看到的所有示例都打开连接,获取数据并关闭连接。但是,如果我创建了3个websocket,它们(在封面下)是否共享到someserver.com的单个连接?还是它们是3个独立的连接?意味着链路的每侧有3个套接字等。
工作组中正在讨论如何自动复用到同一服务器的websocket连接,但目前还没有支持这一点的实现,因此如果打开三个websocket,您将获得三个TCP套接字连接。
但是,如果您同时控制客户端和服务器,那么您的应用程序可能没有理由打开三个到不同URL的独立连接。只需打开一个连接,然后在应用程序级别的协议中就可以指定所需的资源。此外,WebSockets相对于HTTP连接的一大优势是连接保持开放,并且是全双工双向的,并且是基于消息的。当前的WebSocket应用程序通常选择来回发送JSON消息,但一旦建立了WebSocket连接,您就可以来回发送任何想要的消息(目前仅限于可以编码为UTF-8字符串的内容,但未来将支持原始二进制)。
作为WebSocket连接一部分的URL实际上只是WebSocket握手的另一部分。如果服务器配置是一个正在升级到WebSockets服务器的连接的Web服务器,那么URL可以用来选择将连接传递到哪个WebSockets server。但是,如果你有一个原始WebSockets server来回答连接,那么URL只是握手中的另一段数据,服务器可以决定对URL执行任何它想要的操作。