WebSockets版本之间的协议差异是什么?

时间:2012-02-11 10:24:29

标签: websocket protocols

各种WebSockets草稿之间是否存在协议差异的摘要?

浏览器支持级别仍然存在,所以仅考虑RFC是不够的。

显然Sec-WebSocket-Version发生了变化,我知道早期的格式非常不同。但是,我的意思是协议中更微妙的变化。例如,框架中的hybi-10(v8)表明扩展的有效载荷长度存储为16/63,而不是RFC 6455(v13)中的16/64。

那么:在任何地方都有变化摘要吗?

或者(如果我们忽略非常早期的草案和版本号),协议是否基本相同,并且草稿主要是对规范文本的更正?

3 个答案:

答案 0 :(得分:19)

Wikipedia WebSocket列出哪些浏览器支持哪种协议。

此外,IETF提供了一个diff工具,可用于比较任何两个RFC草案规范。例如,要比较WebSocket草案15和17,请转到此处:

调整url1和url2地址以获取任意版本的差异。请注意,这将显示与规范的文本差异,并且规范的大变化经常发生而没有相应的线路差异。我建议在差异中搜索“协议概述”部分和“基本帧协议”部分,它们分别显示标题摘要和框架图。

Hixie-76 / HyBi-00(HyBi-00只是用于启动新系列的Hixie-76的副本)和HyBi系列的其余部分(从HyBi-04开始)之间出现了最大的线缆协议差异( HyBi-17成为IETF RFC 6455)。从Hixie系列到HyBi系列的一些重大变化:

  • 在Hixie-76协议中,在握手报头之后但在实际数据帧之前发生了一种特殊的哈希握手。
  • 在Hixie-76中,帧的前缀为0x00,后缀为0xff。除了一直接收/缓冲到帧的末尾之外,无法确定帧的长度。在HyBi系列中(在HyBi-00之后),帧长度是前缀/标题的一部分,没有后缀。
  • HyBi系列支持有效载荷中的UTF-8文本和二进制数据(Hixie仅支持UTF-8)。这由帧头中的和操作码表示。

答案 1 :(得分:4)

添加特定更改;在Sec-WebSocketVersion< = 8中,原点位于Sec-WebSocket-Origin;但是,在13中,这会更改为Origin标题。这具体改变between hybi-10 and hybi-11,它们都是版本“8”。另请注意,它在hixie-76 / hybi-00中为Origin,因此看起来它从Origin变为Sec-WebSocket-Origin,然后又变回Origin

答案 2 :(得分:2)

我不知道目前正在使用的许多协​​议版本。我有一个websocket服务器,支持Hixie-76和hybi-10到17(只是更改Sec-WebSocket版本),可以对抗Safari(桌面+ iOS),Firefox和Chrome。

(旧版)Hixie-76至少可以与iOS设备通信。

hybi-10起初基本相同。我假设你的扩展有效载荷的例子在hybi-10中被宣传为63位是一个错字,并且是当草稿从10迅速移动到17时所做的许多小修正之一。

稍后:编辑以显示某些Safari版本实际使用Hixie-76