2011-02-02 2 views
3

J'essaye d'implémenter un serveur websockets en java mais j'ai du mal à comprendre la version du protocole websocket que google chrome implémente. Poster sur this blog de l'équipe de chrome mentionne qu'ils ont mis en œuvre la version 76 du protocole WebSockets qui devrait avoir la demande de poignée de main suivante (copiée à partir de la version officielle 76 spec (section 1.2)):Quelle version du protocole websockets est-ce que google chrome implémente?

GET /demo HTTP/1.1 
Host: example.com 
Connection: Upgrade 
Sec-WebSocket-Key2: 12998 5 Y3 1 .P00 
Sec-WebSocket-Protocol: sample 
Upgrade: WebSocket 
Sec-WebSocket-Key1: 4 @1 46546xW%0l 1 5 
Origin: http://example.com 

^n:ds[4U 

alors que la demande de poignée de main Je reçois de google chrome (8.0.552.237) est:

GET/HTTP/1.1 
Upgrade: WebSocket 
Connection: Upgrade 
Host: localhost:8082 
Origin: http://localhost:8081 
Sec-WebSocket-Key1: g3 I 9w F : Kt 3?u784C-0 99 5z 
Sec-WebSocket-Key2: 4 S5l&Y4m]11+4 032s Ecfl 

ïÿÁëƒ^ 

quelqu'un peut-il s'il vous plaît me expliquer pourquoi est-il une différence entre la version de googles et la spécification officielle. Et quel serait le bon format de réponse pour la version de google? PS: Quelqu'un at-il une estimation du moment où le protocole Websockets serait finalisé?

+1

voici le [lien pour la version officielle 76 spec (section 1.2)] (http://tools.ietf.org/html/draft-hixie-thewebsocketprotocol-76#section-1.2) – Ansh

Répondre

4

Chrome met actuellement en œuvre draft-hixie-thewebsocketprotocol-76 qui est également connu sous le nom draft-ietf-hybi-thewebsocketprotocol-03. Le protocole et les spécifications sont maintenant publiés par le groupe de travail HyBi de l'IETF, donc la numérotation 03 est en fait plus correcte et les prochaines versions de la spécification continueront cette numérotation (mais la plupart des gens l'appellent encore v76).

La prise de contact que vous obtenez de Chrome-8.0.552 correspond à la spécification. Les différences sont dues au fait que l'ordre des en-têtes peut varier et que les clés auront des valeurs différentes pour chaque nouvelle connexion. Les valeurs d'hôte, d'origine, de chemin et de protocole dépendent de l'invocation de la connexion. page.

La réponse ressemblera à quelque chose comme ça (mais pas exactement parce que la réponse est générée en fonction de la poignée de main du client):

HTTP/1.1 101 WebSocket Protocol Handshake 
Upgrade: WebSocket 
Connection: Upgrade 
Sec-WebSocket-Origin: http://example.com 
Sec-WebSocket-Location: ws://example.com/demo 
Sec-WebSocket-Protocol: sample 

8jKS'y:G*Co,Wxa- 

J'ai suivi le groupe de travail HyBi et il n'y a pas d'estimation pour quand le protocole sera finalisé. Cependant, un nouveau projet (04) a déjà été publié essayant de répondre aux préoccupations de sécurité des fournisseurs de navigateur. Une version (05) sera probablement publiée dans les prochaines semaines. Les fournisseurs de navigateurs ne mettront probablement pas en œuvre 04 (car il existe encore des zones significatives de faible consensus). Si la plupart des vendeurs de navigateurs adoptent 05 et qu'il n'y a pas de problèmes de sécurité supplémentaires, je suspecte que la version finale du protocole ne changera pas beaucoup à partir de là.

Il est toutefois important de noter que l'API du navigateur pour WebSockets ne sera probablement pas affectée par les modifications du protocole.

+1

Depuis la publication de ce billet, beaucoup plus de révisions ont été publiées. La version actuelle est [draft-ietf-hybi-thewebsocketprotocol-17] (http://tools.ietf.org/html/draft-ietf-hybi-thewebsocketprotocol-17). Tout statut sur ce problème? Qu'est-ce que les navigateurs supportent aujourd'hui? –

+3

Quelques endroits qui suivent la version du protocole WebSocket implémentée dans les navigateurs: http://en.wikipedia.org/wiki/WebSocket#Browser_support, https://developer.mozilla.org/en/WebSockets – kanaka

Questions connexes