2011-02-02 17 views
3

私はJavaでWebsocketsサーバーを実装しようとしていますが、Google Chromeの実装であるwebsocketプロトコルのバージョンを理解できません。 thisブログでクロムチームを投稿彼らは(公式バージョン76の仕様(セクション1.2)からコピーされた)次のハンドシェイク要求を持つべきであるのWebSocketプロトコルのバージョン76実装されていることを言及:ハンドシェイクリクエストとしてGoogle Chromeで実装されているWebSocketプロトコルドラフトのバージョン

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 

グーグルのバージョンと公式スペックの間に相違がある理由を誰かが私に説明していただけます

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 

ïÿÁëƒ^ 

:私はGoogleのクロム(8.0.552.237)からされて取得しています。そして、Googleのバージョンに対応する正しい形式は何でしょうか。

PS:WebSocketプロトコルが最終化されるまでに誰かが推測していますか?

+1

[公式バージョン76仕様(セクション1.2)のリンク](http://tools.ietf.org/html/draft-hixie-thewebsocketprotocol-76#section-1.2) – Ansh

答えて

4

現在のところ、draft-hixie-thewebsocketprotocol-76は、draft-ietf-hybi-thewebsocketprotocol-03として知られています。プロトコルと仕様は現在IETF HyBiワーキンググループによって公表されているので、03の番号付けは実際より正確であり、次のバージョンの仕様はその番号付けを続けるでしょう(しかし、ほとんどの人はまだそれをv76と呼んでいます)。

Chrome-8.0.552から取得しているハンドシェイクは、仕様と一致します。違いは、ヘッダーの順序が変わる可能性があり、キーが新しい接続ごとに異なる値を持ち、ホスト、発信元、パス、およびプロトコルの値が、Javascriptの接続方法および呼び出すURLによって異なるためですページ。

応答は、この(正確に応答がクライアントの握手に基づいて生成されていないのでが)のようなものになります

:私はHyBiワーキンググループ次してきたための見積りはありません

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- 

をプロトコルが確定されます。しかし、ブラウザベンダーのセキュリティ上の懸念に対処しようとすると、すでに新しいドラフト(04)が公開されています。 A(05)版は今後数週間で公開される予定です。ブラウザーのベンダーはおそらく04を実装しません(コンセンサスがまだ重大な部分があるため)。ほとんどのブラウザベンダーが05を採用し、セキュリティ上の懸念がない場合、私はプロトコルの最終版がそこから大きく変わることはないと考えています。

しかし、WebSocket用のブラウザAPIは、プロトコルの変更の影響を受けない可能性があります。

+1

thie投稿が発行されたので、多くのより多くの改訂版が公​​開されました。現在のバージョンは[draft-ietf-hybi-thewebsocketprotocol-17](http://tools.ietf.org/html/draft-ietf-hybi-thewebsocketprotocol-17)です。この問題のステータスは?今日のブラウザーは何をサポートしていますか? –

+3

ブラウザで実装されているWebSocketプロトコルのバージョンを追跡する場所は次のとおりです。http://en.wikipedia.org/wiki/WebSocket#Browser_support、https://developer.mozilla.org/en/WebSockets – kanaka

関連する問題