2012-02-11 9 views
15

プロトコルの相違点のどこに要約がありますか?WebSocketのバージョン間のプロトコルの違いは何ですか?

ブラウザのサポートレベルは、あらゆる場所に残っているので、それだけでRFCを検討するのに十分ではありません。

明らか秒-のWebSocket-バージョンは変わり、私は初期のフォーマットはかなり根本的に異なっていた知っています。しかし、私はプロトコルのより微妙な変更を意味します。たとえば、フレーミングのhybi-10(v8)では、拡張されたペイロードの長さは、RFC 6455(v13)の16/64ではなく、16/63として保存されています。

So:どこに変更の概要がありますか? (私たちは非常に初期の草稿、およびバージョン番号を無視した場合)

あるいは、プロトコルは、本質的に同じであること、そしてドラフトは、仕様のテキストの修正が主であることをケースですか?

答えて

19

ウィキペディアWebSocketリストを使用することを示しています。

また、IETFは、任意の2つのRFCドラフト仕様を比較するために使用することができる差分ツールを提供します。例えば、WebSocketのドラフト15と17を比較すると、ここに行く:

任意のバージョンの差分を取得するにはURL1とURL2アドレスを調整します。これは仕様との文字の違いを示し、仕様の大幅な変更はワイヤの対応する違いなしに起こることに注意してください。私は、ヘッダーサマリーとフレーミングダイアグラムをそれぞれ示した "Protocol Overview"セクションと "Base Framing Protocol"セクションのdiffを検索することをお勧めします。

Hixie-76/HyBi-00(HyBi-00は新しいシリーズを開始するためのHixie-76のコピーのみでした)とHyBi-04で始まる残りのHyBiシリーズ(HyBi-17はIETF RFC 6455となった)。 HyBiシリーズにHixieシリーズからの主な変更点のいくつか:Hixie-76プロトコルで

  • は、ハンドシェイクヘッダの後に実際のデータフレームの前に起こった独特のハッシュハンドシェイクがありました。
  • Hixie-76では、フレームの先頭に0x00が付いており、接尾辞は0xffです。フレームの最後まで受信/バッファリングする以外は、フレームの長さを判断する方法はありませんでした。 HyBiシリーズ(HyBi-00以降)では、フレームの長さは接頭辞/ヘッダーの一部であり、接尾辞はありません。
  • HyBiシリーズは、ペイロード内のUTF-8テキストとバイナリデータの両方をサポートしています(HixieのみサポートされているUTF-8)。これは、フレームヘッダーのopcodeで示されます。
+1

ここでは、スペック比較ツールが本当の勝者です。私は自信を持っています。乾杯。私は非常に異なる00をよく知っていた。それは私がチェックしたいと思っていた後のドラフトの間の小さな違いでした。 –

+0

興味深い変化が見つかりました。元のヘッダーを元に戻してください。私の答えの詳細 –

2

私は、現在使用されているプロトコルのバージョンの多くを認識していません。 Safari(デスクトップ+ iOS)、Firefox、Chromeに対抗するHixie-76とhybi-10〜17(Sec-WebSocket-Versionの変更のみ)をサポートするwebsocketサーバーがあります。

(古い)Hixie-76は、少なくともiOSデバイスに話をするのに便利です。

hybi-10以降は基本的に同じです。私はhybi-10の63ビットとして宣伝されている拡張ペイロードの例が誤植で、ドラフトが10時から17時に急激に変化したときの小さな修正の1つであると仮定しました。

後で編集:いくつかのSafariのバージョンは、実際にサポートされたプロトコルをブラウザHixie-76

+0

これも私の結論でした。 63を使用すると、すべてが厄介な位置合わせをしていたことになります。クール; 10から17までバージョン擬似を試し、明示的にhybi-00サポートを追加します。ありがとう。 –

+0

実際には、変更があります - 私の答えを参照してください –

+0

ああ、それについて申し訳ありません。私は私の(シンプルな)websocketサーバーが元のヘッダーを使用しないので、それを逃しました。 – simonc

4

特定の変更を追加するには、次のように入力します。 Sec-WebSocketVersion < = 8の場合、元はSec-WebSocket-Originです。ただし、13でこれはOriginヘッダーに変更されます。これは具体的にはbetween hybi-10 and hybi-11となり、どちらもバージョン "8"の実装です。また、hixie-76/hybi-00ではOriginであることに注意してください。OriginからSec-WebSocket-Originに、そしてOriginに戻ったようです。