一番下の行:permessage-deflateレスポンスヘッダーを追加した後にwebsocketフレームが自動的に圧縮されますか?
は私がpermessage-収縮ヘッダは、要求と応答の両方に存在していても、圧縮されたメッセージをWebSocketを表示されません。
いくつかの詳細:
私はnodejsサーバーを持っている、と私は(engine.io下で)プライマスを使用しています。 permessage-delateをサポートするために、私はPrimusの 'compression'機能を使用します。
私はそれをオンにした後、私は応答の上にpermessage - deflateヘッダーを見始めます。
しかし、websocketフレーム自体は圧縮されていません。
私はcharlesproxyを使用してトラフィックをスニッフィングし、再度、フレームは「圧縮」機能をオンにする前と同じように見えます。
イラスト:
はここでのWebSocketハンドシェイクの例要求です:
Accept-Encoding:gzip, deflate, br
Accept-Language:en-US,en;q=0.8,he;q=0.6,fr;q=0.4
Cache-Control:no-cache
Connection:Upgrade
Cookie:[some cookies]
Host:[our host]
Origin:https://[our host]
Pragma:no-cache
Sec-WebSocket-Extensions:permessage-deflate; client_max_window_bits
Sec-WebSocket-Key:6nMxnGd0E8GrDg2s1B4tHQ==
Sec-WebSocket-Version:13
Upgrade:websocket
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36
そして、これは、対応する応答である:
Connection:upgrade
Date:Tue, 11 Jul 2017 14:10:18 GMT
Sec-WebSocket-Accept:lLjOXWbLRVIHw2inxrhx0U1ryrM=
Sec-WebSocket-Extensions:permessage-deflate; client_no_context_takeover
Sec-WebSocket-Version:13
Server:nginx
Upgrade:websocket
WebSocket-Server:uWebSockets
これらの例は、クロムDEVから取られツールネットワークのインスペクタ。 私はcharlesproxyスニファで何か似たようなものを見ます。
その他の参照:
私はこれを見た:
Implementing permessage-deflate in WebSockets
をしかし、私はかなりそこに有効な答えを見つけることができませんでした。
そう...
私はここで何をしないのですか? さらに何かを実装する必要はありますか? ライブラリを追加する必要がありますか?
バージョン:
- ノード - 4.2.4
- プリムス - 7.0.2
- クロム:59.0.3071.115
- FF:54.0.1
- チャールズ:4.1。 4
多くの感謝!