2012-02-11 177 views
15

在各种WebSockets草案之间协议差异的任何地方是否有汇总?WebSockets版本之间的协议区别是什么?

浏览器的支持级别还在各地,所以仅仅考虑RFC是不够的。

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

因此:是否有任何改变的总结?

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

回答

19

维基百科WebSocket列出哪些浏览器支持哪种协议。

此外,IETF提供了一个diff工具,可用于比较任意两个RFC草案规范。例如,为了比较的WebSocket草案15和17可以去这里:

调整URL1和URL2地址获得任意版本差异。请注意,这将显示您与规范的文本差异,并且规范的大规模更改通常会在网络上发生相应差异的情况下发生。我建议在“协议概述”部分和“基本框架协议”部分分别显示标题摘要和框架图。

Hixie-76/HyBi-00(HyBi-00仅仅是用于启动新系列的Hixie-76的副本)和HyBi-04的其余部分以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

好吧,规格比较工具是真正的赢家 - 让我有信心。干杯。我非常清楚00这个非常不同的东西;这是我想要检查的后期草案之间的小差异。 – 2012-02-11 19:17:08

+0

找到一个有趣的变化,重新起源标题;在我的答案更详细 – 2012-02-11 23:12:03

2

我不知道很多正在使用的协议版本。我有一个websocket服务器,它支持对Safari(桌面+ iOS),Firefox和Chrome的Hixie-76和Hybi-10到17(只是改变Sec-WebSocket-Version)。

(较旧的)Hixie-76至少适用于与iOS设备交谈。

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

稍后:编辑为表明一些Safari版本实际上使用Hixie-76

+0

这也是我的结论;使用63将意味着一切都很尴尬,这将是疯狂的。凉;我将尝试10到17版的模拟版本,并添加明确的hybi-00支持。谢谢。 – 2012-02-11 11:33:26

+0

其实,有一个变化 - 请看我的回答 – 2012-02-11 20:31:52

+0

啊,对不起。我错过了,因为我的(简单)websocket服务器不使用origin标头。 – simonc 2012-02-13 07:52:04

4

添加特定更改;在Sec-WebSocketVersion < = 8,原点在Sec-WebSocket-Origin;然而,在13这个更改为Origin标题。这特别改变了between hybi-10 and hybi-11,它们都是版本“8”的实现。还要注意它在hixie-76/hybi-00中为Origin,所以看起来它从OriginSec-WebSocket-Origin,然后返回到Origin

相关问题