17

各种 WebSockets 草案之间的协议差异是否有任何摘要?

浏览器支持级别仍然无处不在,因此仅考虑 RFC 是不够的。

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

那么:是否有任何地方的变化摘要?

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

4

3 回答 3

20

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

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

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

有线协议的最大区别发生在 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)。这由帧头中的操作码和操作码指示。
于 2012-02-11T18:14:54.760 回答
4

添加特定更改;在Sec-WebSocketVersion<= 8 中,原点在Sec-WebSocket-Origin; 但是,在 13 中,这将更改为Origin标题。这在 hybi-10 和 hybi-11 之间特别变化,它们都是版本“8”的实现。另请注意,它Origin位于 hixie-76/hybi-00 中,因此它看起来像是从OrigintoSec-WebSocket-Origin又回到Origin.

于 2012-02-11T20:26:53.307 回答
2

我不知道当前使用的许多协​​议版本。我有一个 websocket 服务器,它支持 Hixie-76 和 hybi-10 到 17(只是 Sec-WebSocket-Version 的变化),它适用于 Safari(桌面 + iOS)、Firefox 和 Chrome。

(较旧的)Hixie-76 至少对于与 iOS 设备通信很有用。

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

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

于 2012-02-11T10:51:03.863 回答