websocket多路复用扩展的用途和目的

时间:2013-01-05 05:13:02

标签: html5 websocket

我试图了解websocket多路复用扩展的目的,文档声明的主要目的是使用单个相同的源物理websocket连接到服务器,而每个浏览器选项卡使用在物理连接之上多路复用的逻辑连接。我看到了另一种可以实现此行为的替代方法,该方法是启动一个共享Web工作者,该工作人员打开websocket连接并让每个浏览器选项卡向/从此工作人员发送和接收消息。我还没试过这个,我想知道这个会不会有用。

1 个答案:

答案 0 :(得分:13)

您的问题反映了对WebSocket Multiplexing Extension试图解决的问题的误解。

base WebSocket规范(RFC 6455)定义了一种通过TCP / IP进行双向数据交换的协议。 WebSocket作为普通的HTTP请求/响应启动。在此交换中,客户端和服务器协商切换到WebSocket协议。切换后,客户端和服务器通过TCP / IP连接交换数据帧。这将在客户端和服务器之间创建双向数据流。

基本协议的一个缺点是它只支持在每个方向上流动的单个数据流。 多路复用扩展通过允许客户端和服务器在同一TCP / IP连接上创建多个“通道”来扩充基本协议。

因此,多路复用扩展的目的是允许多个WebSocket通道在相同的TCP / IP连接上运行。就是这样。

让多个浏览器选项卡(或Web工作者)共享一个TCP / IP连接只是示例,可以使用多路复用的websockets 。在标准术语中,它只是“信息性”(描述性),而不是“规范性”(规范的必要部分)。