4

Chrome 19 WebSocket に問題があります。x-webkit-deflate-frame拡張機能を使用してサーバーに接続しようとしています。ただし、その拡張機能をサポートしていないことをそのクライアントに示す方法がわかりません (または、それが Chrome 19 のバグであり、サポートしていないという事実を無視している場合は?)。いくつかのSOの回答に関連するこの問題を見てきましたが、一貫した解決策がわかりません。

たとえば、ヘッダーを受け取った場合

Upgrade: websocket
Connection: Upgrade
Host: titantest:30100
Origin: http://titantest
Sec-WebSocket-Key: f+7h4rrKKqdRRdD7WwTZow==
Sec-WebSocket-Version: 13
Sec-WebSocket-Extensions: x-webkit-deflate-frame

私たちは何と答えるべきですか?

HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: 3eazAhsFLXFWB1OjcYMtzP13yag=

Sec-WebSocket-Extensionそれに加えて、さまざまな種類を試しました

Sec-WebSocket-Extension: '-'
Sec-WebSocket-Extension: -
Sec-WebSocket-Extension: 
<- blank: don't send a Sec-WebSocket-Extension header ->

Websocket プロトコルのコピーも手元にあるので、見逃した/読み間違えた点を指摘してください。

4

2 に答える 2

2

RFC 6455 のセクション 9.1 は、拡張ネゴシエーションを扱っています。

クライアントは拡張機能のリストを提案し、サーバーは提案されたものから受け入れたいものを選択し、戻りの Sec-WebSocket-Extensions ヘッダーを使用してその選択を示します。サーバーハンドシェイク応答に拡張ヘッダーをまったく含めないことで、何も受け入れられません。

拡張ヘッダーを返さない場合、chrome 19 に特定の問題がありますか?

于 2012-07-18T16:11:26.387 に答える
0

レスポンスから Sec-WebSocket-Extension を省略するのが正しい方法です。

また、受信したデータのマスキングを解除していることを確認する必要があります。テキストを受信しようとしているだけの場合は、マスクを解除しない限り、文字化けして表示されます。

このサイトには、Websocket 接続を介して受信したデータのマスクを解除する方法に関するかなりの説明があります: http://lucumr.pocoo.org/2012/9/24/websockets-101/

于 2014-03-18T21:39:02.373 に答える