WebSocket是否支持数据压缩以节省带宽?有哪些可用的选项?一个可能的解决方案是使用Bijson代替Json。
当前的WebSockets协议草案不包含压缩扩展。以前有一个:deflate-stream,它通过压缩整个WS流来工作。这样做的有效性是有限的,因为WS引入了客户端到服务器的帧屏蔽,每帧更改掩码,这样,deflate将无法保持有效的压缩字典。
有一个关于基于帧的压缩的建议草案,它可以解决这个问题,因为在屏蔽之前,压缩字典是为有效负载维护的。
Websockets节省带宽的第一种方式是为多个(双向)消息打开连接。只要需要,连接就可以保持打开状态。这意味着不需要像旧的http方法那样为每个事务协商一个新连接。消息本身具有标头信息,用于指定传入消息是文本还是二进制,以及"有效负载"的长度。是。
您可以让您的服务以您想要的任何方式解释消息。具体的压缩相关数据可以通过扩展表示:参见标准第9节:https://datatracker.ietf.org/doc/html/draft-ietf-hybi-thewebsocketprotocol-15#section-9
标准组织已经制定了压缩扩展的工作草案:https://datatracker.ietf.org/doc/html/draft-tyoshino-hybi-websocket-perframe-deflate-00
WebSocket规范允许扩展,例如deflated -stream。但是,客户机和服务器可能支持也可能不支持。
您可以使用基于javascript的Zip或其他压缩算法。
您可以在关闭加密并将压缩设置为最大的情况下通过ssh连接传输所有内容?
例如:
ssh -N -g -f -C -o CompressionLevel=9 -o Cipher=none eamorr@172.16.1.218 -L 6999:172.16.1.218:3129