2011-09-21 392 views
10

WebSocket是否提供數據壓縮支持以節省帶寬? 有哪些可用選項? 一個可能的解決方案可能是使用Bijson來代替Json。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的規格允許的擴展,如放氣流。但是,它可能會或可能不會被客戶端和服務器支持。

您可能想要使用基於JavaScript的Zip或其他壓縮算法。

3

Websockets節省帶寬的第一種方法是將連接保留爲打開多個(雙向)消息。只要需要,連接可以保持打開狀態。這意味着不需要像舊的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

3

當前的WebSockets協議草案不包含壓縮擴展。之前有一個:deflate-stream,它通過壓縮整個WS流來工作。這樣做的有效性是有限的,因爲WS引入了客戶端到服務器的幀掩碼,並且每幀的掩碼更改,因此deflate不能保留有效的壓縮字典。

有一個基於幀的壓縮方案草案,它可以解決這個問題,因爲壓縮字典是在掩碼之前爲有效載荷維護的。