2011-09-21 397 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不能保留有效的压缩字典。

有一个基于帧的压缩方案草案,它可以解决这个问题,因为压缩字典是在掩码之前为有效载荷维护的。