La ligne de fond:Les cadres websocket sont-ils automatiquement compressés après l'ajout de l'en-tête de réponse permessage-deflate?
Je ne vois pas websocket messages compressés, même si les perMessage-dégonflage têtes existent à la fois sur la demande et la réponse.
Quelques détails:
J'ai un serveur nodejs, et je l'utilise Primus (avec engine.io moins). J'utilise la fonction 'compression' de Primus, afin de prendre en charge le delta-permessage. Après que je l'ai allumé, je commence à voir l'en-tête permessage-deflate sur les réponses.
Mais je ne vois pas les cadres websocket eux-mêmes être compressés.
Je renifle le trafic en utilisant charlesproxy, et encore - les cadres sont identiques à ce qu'ils étaient avant d'activer la fonction 'compression'.
Illustration:
Voici un exemple de demande de la poignée de main de 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
Et ceci est la réponse correspondante:
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
Ces exemples sont tirés de la dev Chrome inspecteur de réseau d'outils. Je vois quelque chose de similaire dans le renifleur charlesproxy.
Autre référence:
J'ai vu ceci:
Implementing permessage-deflate in WebSockets
Mais je ne pouvais pas trouver tout à fait une réponse valable il.
Alors ...
Qu'est-ce que je manque ici? Dois-je implémenter quelque chose de plus? Dois-je inclure une bibliothèque?
Versions:
- nœud - 4.2.4
- primus - 7.0.2
- chrome: 59.0.3071.115
- FF: 54.0.1
- Charles: 4,1. 4
Merci beaucoup!