Сжатие данных WebSocket - PullRequest
       10

Сжатие данных WebSocket

10 голосов
/ 21 сентября 2011

Обеспечивает ли WebSocket сжатие данных для экономии пропускной способности? Какие варианты доступны? Одним из возможных решений может быть использование Bijson вместо Json.

Ответы [ 4 ]

3 голосов
/ 26 сентября 2011

Текущий проект протокола WebSockets не содержит расширение сжатия. Был один ранее: deflate-stream, который работает путем сжатия всего потока WS. Эффективность этого ограничена, так как WS ввел маскирование кадров клиент-сервер с изменением маски для каждого кадра, и, таким образом, deflate не сможет поддерживать эффективный словарь сжатия.

Существует черновое предложение для сжатия на основе фреймов, которое работает вокруг этого, поскольку словарь сжатия поддерживается для полезной нагрузки перед маскированием.

3 голосов
/ 21 сентября 2011

Первый способ, с помощью которого веб-сокеты сохраняют пропускную способность, - оставить соединение открытым для нескольких (двунаправленных) сообщений.Соединение может оставаться открытым, пока это необходимо.Это означает, что не требуется согласовывать новое соединение для каждой транзакции, как старый HTTP-подход.Сами сообщения имеют информацию заголовка, которая указывает, является ли входящее сообщение текстовым или двоичным, и какова длина «полезной нагрузки».

Вы можете позволить своему сервису интерпретировать сообщения любым удобным для вас способом.Конкретные данные, относящиеся к сжатию, могут быть выражены через расширения: см. Раздел 9 стандарта: http://tools.ietf.org/html/draft-ietf-hybi-thewebsocketprotocol-15#section-9

Организация по стандартизации подготовила рабочий проект для расширения сжатия: http://tools.ietf.org/html/draft-tyoshino-hybi-websocket-perframe-deflate-00

1 голос
/ 21 сентября 2011

Спецификации WebSocket допускают расширения, такие как deflate-stream.Однако он может поддерживаться или не поддерживаться клиентом и сервером.

Возможно, вы захотите использовать Zip-код на основе JavaScript или другие алгоритмы сжатия.

0 голосов
/ 21 сентября 2011

Вы могли бы туннелировать все через соединение ssh с выключенным шифрованием и максимальным сжатием?

например:.

ssh -N -g -f -C -o CompressionLevel=9 -o Cipher=none eamorr@172.16.1.218 -L 6999:172.16.1.218:3129

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...