2011-09-21 21 views
10

Czy WebSocket zapewnia wsparcie dla kompresji danych, aby oszczędzić przepustowość? Jakie są dostępne opcje? Jednym z możliwych rozwiązań może być użycie Bijsona zamiast Jsona.Kompresja danych WebSocket

Odpowiedz

-3

Można tunelować wszystko przez połączenie ssh z wyłączonym szyfrowaniem i kompresją ustawioną na maksimum?

np .: specyfikacje

ssh -N -g -f -C -o CompressionLevel=9 -o Cipher=none [email protected] -L 6999:172.16.1.218:3129

1

websocket umożliwienia rozszerzenia, jak upust powietrza strumienia. Jednak klient może i nie jest obsługiwany przez klienta i serwer.

Możesz chcieć używać Zipa lub innych algorytmów kompresji javascript.

3

Pierwszym sposobem, w jaki Websockets oszczędzają przepustowość, jest pozostawienie otwartego połączenia dla wielu (dwukierunkowych) wiadomości. Połączenie może pozostać otwarte tak długo, jak będzie potrzebne. Oznacza to, że nowe połączenie nie musi być negocjowane dla każdej transakcji, takiej jak stara metoda http. Same wiadomości zawierają informacje nagłówkowe, które określają, czy przychodząca wiadomość jest tekstowa czy binarna oraz jak długo trwa "ładunek".

Możesz pozwolić swojej usłudze interpretować wiadomości w dowolny sposób. Konkretne dane kompresji związane może być wyrażony poprzez rozszerzeniach: patrz rozdział 9 normy: http://tools.ietf.org/html/draft-ietf-hybi-thewebsocketprotocol-15#section-9

Organizacja standardy opracowała projekt pracy dla przedłużenia kompresji: http://tools.ietf.org/html/draft-tyoshino-hybi-websocket-perframe-deflate-00

3

Obecny projekt protokołu WebSockets nie zawiera rozszerzenia kompresji . Poprzednio był jeden: deflate-stream, który działa poprzez kompresję całego strumienia WS. Skuteczność tego jest ograniczona, ponieważ WS wprowadził maskowanie ramek typu klient-serwer, z maską zmienioną na klatkę, i przez to deflacja nie byłaby w stanie utrzymać efektywnego słownika kompresji.

Istnieje wersja robocza dla kompresji opartej na ramce, która działa w ten sposób, ponieważ słownik kompresji jest utrzymywany dla ładunku przed maskowaniem.