Каковы различия протокола между версиями WebSockets? - PullRequest
15 голосов
/ 11 февраля 2012

Есть ли где-нибудь краткое изложение различий протокола между различными черновиками WebSockets?

Уровни поддержки браузера по-прежнему повсеместны, поэтому недостаточно просто рассмотретьRFC.

Очевидно, что Sec-WebSocket-Version меняется, и я знаю, что ранний формат был довольно радикально другим.Однако я имею в виду более тонкие изменения в протоколе.Например, hybi-10 (v8) в кадре предполагает, что длина расширенной полезной нагрузки хранится как 16/63, а не 16/64 в RFC 6455 (v13).

Итак: есть ли сводкагде-нибудь меняется?

В качестве альтернативы (если мы игнорируем очень ранние черновики и номера версий), это тот случай, когда протокол по существу одинаков и что черновики в основном являются исправлениями к тексту спецификации?

Ответы [ 3 ]

19 голосов
/ 11 февраля 2012

В Википедии WebSocket указано, какие браузеры поддерживают какой протокол.

Кроме того, IETF предоставляет инструмент сравнения, который можно использовать для сравнения любых двух предварительных спецификаций RFC.Например, чтобы сравнить проекты 15 и 17 WebSocket, перейдите по ссылке:

Настройте адреса url1 и url2, чтобы получить diff для произвольных версий,Обратите внимание, что это покажет вам текстовые различия в спецификации, и большие изменения в спецификации часто происходят без соответствующих различий в проводе.Я предлагаю поискать различия в разделах «Обзор протокола» и «Базовый протокол кадрирования», которые показывают сводку заголовка и диаграмму кадрирования соответственно.

Самое большое различие в проводном протоколе произошло между Hixie-76 /HyBi-00 (HyBi-00 был просто копией Hixie-76 для запуска новой серии), а остальная часть серии HyBi началась с HyBi-04 (HyBi-17 стала IETF RFC 6455).Некоторые из основных изменений из серии Hixie в серию HyBi:

  • В протоколе Hixie-76 было своеобразное хэш-рукопожатие, которое происходило после заголовков рукопожатия, но до фактических кадров данных.
  • В Hixie-76 кадры имели префикс 0x00 и суффикс 0xff.Не было никакого способа определить длину кадра, кроме как получать / буферизовать весь путь до конца кадра.В серии HyBi (после HyBi-00) длина кадра является частью префикса / заголовка и не имеет суффикса.
  • Серия HyBi поддерживает как текстовые, так и двоичные данные UTF-8 в полезной нагрузке (только для Hixie)поддерживается UTF-8).На это указывает код операции в заголовке кадра.
4 голосов
/ 12 февраля 2012

Добавить конкретное изменение;в Sec-WebSocketVersion <= 8 источник находится в <code>Sec-WebSocket-Origin;однако в 13 это меняет заголовок Origin.Это конкретно меняет между hybi-10 и hybi-11 , которые являются реализациями версии "8".Также обратите внимание, что это Origin в hixie-76 / hybi-00, так что похоже, что оно перешло с Origin на Sec-WebSocket-Origin и затем обратно на Origin.

2 голосов
/ 11 февраля 2012

Мне не известно о многих версиях протоколов, используемых в настоящее время. У меня есть сервер веб-сокетов, который поддерживает 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

...