Pourrait websocket en charge la compression gzip?
Après le succès de poignée de main de WebSocket, pourrait nous avons utilisé la compression gzip?
Voici mes tests:
- - Je utiliser autobahn lib créer un serveur, puis responsable de client:
HTTP/1.1 101 Switching Protocols content-encoding: gzip Connection: Upgrade Server: AutobahnPython/?.?.? Upgrade:
WebSocket Sec-WebSocket-Accept: RIR8KmljoV8Cv9mdiLY7GM2nYMc= - puis mon serveur utilise la compression gzip
- et le navigateur chrome obtenu le résultat, mais il m'a dit que "impossible de décoder un bloc de texte au format UTF-8"
- AutobahnPython (actuellement) ne prend pas en charge le frame par frame extension de compression. Dans tous les cas, la signalisation de support se fait par l'intermédiaire d'un WebSocket spécifiques de l'en-tête HTTP, pas "content-encoding".
- Merci pour le rappel. De toute façon, a un moyen simple de soutenir la compression gzip comme la méthode http lors de l'utilisation websocket?
- Pas de. Pour l'utilisation de la compression sur WebSocket, l'extension doit être mis en œuvre, ce qui nécessite beaucoup de code "au plus profond sous le capot".
- Aucune chance de rentrer à la compression pour le travail? Je suis très intéressé par moi-même.
- AutobahnPython prend désormais en charge "permessage-dégonfler". Vous pouvez le tester avec google Chrome Canary (actuellement le seul navigateur à mettre en œuvre). Vous aurez besoin de la permessage_deflate branche sur AutobahnPython GitHub ou attendre la version 0.6.0 - sera publié prochainement.
- [Mise à jour en 2018] Nous avons dégonfler algorithme sur WS messages (non cadres). Plus d'infos ici: stackoverflow.com/questions/19298651/...
Vous devez vous connecter pour publier un commentaire.
WebSocket la compression est activée dans certains navigateurs par défaut (au moment de l'écriture par exemple dans Chrome, mais pas sous Firefox). Le client doit inclure le 'Sec-WebSocket-Extensions: permessage-deflate' en-tête pour cela. Si le serveur répond avec la même extension, la communication WebSocket est comprimé sur une base de cadre. Autant que je sache, il n'y a pas de navigateur API pour activer/désactiver les extensions.
Un bon article sur le sujet est: https://www.igvita.com/2013/11/27/configuring-and-optimizing-websocket-compression/
Il y a un extension de compression être travaillé sur par l'IETF Websocket (HyBi) groupe de travail. Je suggère à la suite de leur liste de diffusion pour des informations à jour. Je recommande également de vérifier cette question.
Mise à jour de 2017: L'extension a été disponible pendant un certain temps, voir ici: https://tools.ietf.org/html/rfc7692
Oui, il le pouvait. Chrome 19+ prend en charge.
Plus d'infos: comment PerMessageDeflateOffer est utilisé dans les exemples Autobahn.