【问题标题】:What are the protocol differences between WebSockets versions?WebSockets 版本之间的协议差异是什么?
【发布时间】:2012-02-12 07:11:01
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: websocket protocols


    【解决方案1】:

    维基百科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)。这由帧头中的操作码和操作码指示。

    【讨论】:

    • 好的,规格比较工具是真正的赢家——让我有信心。干杯。我很清楚非常不同的 00;我想检查的是后来的草稿之间的细微差异。
    • 发现了一个有趣的变化,re the origin header;我的答案中有更多详细信息
    【解决方案2】:

    添加特定的更改;在Sec-WebSocketVersion Sec-WebSocket-Origin;但是,在 13 中,这将更改为 Origin 标头。这特别改变了between hybi-10 and hybi-11,它们都是版本“8”的实现。另请注意,在 hixie-76/hybi-00 中它是 Origin,所以看起来它是从 OriginSec-WebSocket-Origin,然后又回到 Origin

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • 这也是我的结论;使用 63 意味着所有东西都有尴尬的对齐方式,这太疯狂了。凉爽的;我将尝试 10 到 17 的版本模仿,并添加明确的 hybi-00 支持。谢谢。
      • 其实有变化——看我的回答
      • 啊,对不起。我错过了,因为我的(简单)websocket 服务器不使用源头。
      猜你喜欢
      • 2017-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-13
      • 2020-09-27
      • 2012-12-07
      • 2011-06-24
      • 1970-01-01
      相关资源
      最近更新 更多