2012-02-11 40 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

相關問題