2012-02-11 2 views
15

Existe-t-il un résumé de la différence de protocole entre les différents brouillons WebSockets?Quelles sont les différences de protocole entre les versions de WebSockets?

Les niveaux de support du navigateur sont toujours partout, il ne suffit donc pas de considérer le RFC.

Évidemment, la Sec-WebSocket-Version change, et je sais que le format initial était assez radicalement différent. Cependant, je veux dire les changements les plus subtils dans le protocole. Par exemple, hybi-10 (v8), dans le cadre, suggère que la longueur de la charge utile étendue est stockée en tant que 16/63, plutôt que 16/64 dans la RFC 6455 (v13). Donc, y a-t-il un résumé des changements quelque part? Alternativement (si nous ignorons les versions préliminaires et les numéros de version), est-ce que le protocole est essentiellement le même et que les brouillons sont principalement des corrections au texte de la spécification?

Répondre

19

Le Wikipedia WebSocket liste quels navigateurs supportent quel protocole.

En outre, l'IETF fournit un outil de comparaison qui peut être utilisé pour comparer deux spécifications de brouillon RFC. Par exemple, pour comparer WebSocket projet 15 et 17 rendez-vous ici:

Adjust url1 et URL2 adresses pour obtenir une diff pour les versions arbitraires. Notez que cela vous montrera des différences textuelles à la spécification et de grandes modifications à la spécification se produisent souvent sans différences correspondantes sur le fil. Je suggère de rechercher les différences pour la section "Aperçu du protocole" et la section "Base Framing Protocol" qui montrent le résumé de l'en-tête et le diagramme de cadrage respectivement. La plus grande différence dans le protocole de fil s'est produite entre Hixie-76/HyBi-00 (HyBi-00 était juste une copie de Hixie-76 pour commencer la nouvelle série) et le reste de la série HyBi commençant par HyBi-04 (HyBi-17 est devenu IETF RFC 6455). Certains des changements majeurs de la série Hixie à la série HyBi:

  • Dans le protocole Hixie-76, il y avait une poignée de main de hachage particulière qui est arrivé après les en-têtes poignée de main, mais avant que les trames de données réelles.
  • Dans Hixie-76, les images ont été préfixées avec 0x00 et avec le suffixe 0xff. Il n'y avait aucun moyen de déterminer la longueur de la trame sauf en recevant/buffering tout le chemin jusqu'à la fin de la trame. Dans la série HyBi (après HyBi-00), la longueur du cadre fait partie du préfixe/de l'en-tête et il n'y a pas de suffixe.
  • La série HyBi prend en charge le texte UTF-8 et les données binaires dans la charge utile (Hixie uniquement pris en charge UTF-8). Ceci est indiqué par et opcode dans l'en-tête du cadre.
+1

Ok, l'outil de comparaison de spec est le vrai gagnant ici - laisse-moi avoir confiance. À votre santé. Je connaissais bien le très différent 00; c'était les différences mineures entre les derniers brouillons que je voulais vérifier. –

+0

Trouvé un changement intéressant, re l'en-tête d'origine; plus de détails dans ma réponse –

2

Je ne suis pas au courant de la plupart des versions de protocole étant en cours d'utilisation. J'ai un serveur websocket qui supporte Hixie-76 et hybi-10 à 17 (juste des changements dans Sec-WebSocket-Version) qui fonctionne contre Safari (desktop + iOS), Firefox et Chrome. (L'ancien) Hixie-76 est utile pour parler aux appareils iOS au moins. Hybi-10 et suivants sont essentiellement les mêmes. Je supposais que votre exemple de la charge utile étendue annoncée comme 63 bits dans hybi-10 était une faute de frappe et était l'une des nombreuses petites corrections apportées lorsque les brouillons se déplaçait rapidement de 10 à 17.

Plus tard: édité à montrer que certaines versions de Safari utilisent réellement Hixie-76

+0

C'était ma conclusion aussi; en utilisant 63 signifierait que tout avait un alignement maladroit, ce qui serait fou. Cool; Je vais essayer le mimétisme de version pour 10 à 17, et ajouter un support explicite hybi-00. Merci. –

+0

En fait, il y a un changement - voir ma réponse –

+0

Ah, désolé à ce sujet. J'ai raté cela car mon (simple) serveur websocket n'utilise pas l'en-tête d'origine. – simonc

4

Pour ajouter une modification spécifique; en Sec-WebSocketVersion < = 8, l'origine est en Sec-WebSocket-Origin; Cependant, dans 13, ceci devient l'en-tête Origin. Ceci change spécifiquement between hybi-10 and hybi-11, qui sont les deux implémentations de la version "8". Notez également que c'est Origin dans hixie-76/hybi-00, donc il semble que cela soit passé de Origin à Sec-WebSocket-Origin puis de nouveau à Origin.

Questions connexes