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



是否总结了各种WebSockets草案之间的协议差异

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

很明显,SecWebSocket版本发生了变化,我知道早期的格式完全不同。然而,我指的是协议中更微妙的变化。例如,hybi-10(v8)在成帧中建议将扩展的有效载荷长度存储为16/63,而不是RFC 6455(v13)中的16/64。

那么:有变化的总结吗?

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

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

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

  • http://tools.ietf.org/rfcdiff?url1=draft-ietf-hyb-thewebocketprotocol-15.txt&url2=draft-ietf-hybi-thewebocketprotocol-17.txt

调整url1和url2地址以获得任意版本的差异。请注意,这将向您显示等级库的文本差异,并且等级库的大型更改通常在导线上没有相应差异的情况下发生。我建议在diffs中搜索"协议概述"部分和"基本框架协议"部分,它们分别显示标题摘要和框架图。

有线协议中最大的差异发生在Hixie-76/HyBi-00(HyBi-00只是用于启动新系列的Hixie-76的副本)和以HyBi-04开始的HyBi系列的其余部分(HyBi-17成为IETF RFC 6455)之间。从Hixie系列到HyBi系列的一些主要变化:

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

添加特定更改;在Sec-WebSocketVersion<=8,起源于Sec-WebSocket-Origin;然而,在13中,这改变为Origin报头。这在hybi-10和hybi-11之间发生了特别的变化,它们都是版本"8"的实现。还要注意的是,它在海协-76/hybi-00中是Origin,所以看起来它从OriginSec-WebSocket-Origin,然后又回到Origin

我不知道当前使用的许多协议版本。我有一个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

相关内容

  • 没有找到相关文章

最新更新