2011-09-21 23 views
10

WebSocketは帯域幅を節約するためにデータ圧縮をサポートしていますか? 利用できるオプションは何ですか? Jsonの代わりにBijsonを使用する方法が考えられます。WebSocketデータ圧縮

答えて

-3

暗号化をオフにして圧縮を最大に設定してssh接続ですべてをトンネルできますか?

例えば:

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

1

のWebSocket仕様は、DEFLATEストリームとして拡張を可能にします。ただし、クライアントとサーバーでサポートされる場合とサポートされない場合があります。

javascriptベースのZipやその他の圧縮アルゴリズムを使用することができます。

3

Websocketsが帯域幅を節約する最初の方法は、複数の(双方向)メッセージに対して接続を開いたままにすることです。接続は、必要なだけ開いたままにすることができます。つまり、古いHTTPのようなすべてのトランザクションで新しい接続をネゴシエートする必要はありません。メッセージ自体には、着信メッセージがテキストかバイナリか、および「ペイロード」の長さを指定するヘッダー情報があります。

サービスでは、どのような方法ででもメッセージを解釈させることができます。特定の圧縮関連のデータは、拡張子によって表現することができる:標準化団体は、圧縮拡張のためのワーキングドラフトを生産しているhttp://tools.ietf.org/html/draft-ietf-hybi-thewebsocketprotocol-15#section-9

http://tools.ietf.org/html/draft-tyoshino-hybi-websocket-perframe-deflate-00

3

現在のWebSocketプロトコルのドラフトは、圧縮拡張子が含まれていない標準のセクション9を参照してください。 。以前は、deflate-streamがありました。これは、WSストリーム全体を圧縮して動作します。 WSはクライアント/サーバー間のフレームマスキングを導入し、フレームごとにマスクを変更することで効果が限定されています。そのため、収縮は有効な圧縮辞書を保持できません。

マスキングする前に圧縮辞書がペイロード用に保持されているため、フレームベース圧縮の草案があります。