服务器 消息压缩,WebSocket如何压缩消息?

WebSocket协议支持Text和Binary消息,JSON作为传输数据的一种方式,但不保证压缩。WebSocket扩展如RFC7692(permessage-deflate)可用于消息压缩,但其使用是可选的且取决于服务器支持。浏览器支持方面,Chrome从32版、Firefox从37版开始支持,而Safari和Edge在特定版本后才支持。服务器支持情况未详细列出。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Myst..

15

websocket在发送到流之前是否会压缩其JSON?

简短的回答是:有时,但你不能依赖它.

正如Joakim Erdfelt恰当地指出的那样,Websocket连接支持Text和Binary消息.

JSON只是传输数据的一种方式,具有通用性和易用性的优点(就空间而言是浪费).

您可以使用Websocket API轻松传输二进制数据,从而消除带宽开销,但代价是其他问题(例如,endieness,字长,解析等).

许多浏览器还支持Websocket消息压缩作为Websocket协议的扩展(尽管服务器可能不支持扩展).

使用Sec-WebSocket-ExtensionsHTTP标头协商扩展.协商通常由客户端/服务器实现,而不提供用于控制它们的公共API.

直到2015年,有许多方法和实现在野外,但自2015年12月以来, RFC 7692是消息压缩的唯一真正竞争者,事情更加清晰.

RFC 7692在Websocket"数据包"中包装(并且可能将其分段)之前压缩整个消息,使得它比以前的压缩方案更容易实现.

当前草案提供permessage-foo压缩协商方案(其中foo是请求/支持的压缩).

我permessage-deflate自己只经历了扩展.

请注意,扩展协商是可选的,这意味着即使您的服务器支持扩展,通常也允许潜在的网络客户端在没有压缩的情况下协商连接.

此外,RFC 7692支持选择性压缩,这意味着某些消息可能会被压缩,而其他消息则不会被压缩...

...例如,[123456789,123456789]可能按原样发送,因为它的长度表示它不太可能值得压缩.

支持permessage-deflate(RFC 7692),2017年8月8日:

这是评论中的信息的组合,最后更新时间为2017年8月8日.

如果我遗漏了任何内容,请在此处添加并更新日期.

已知的浏览器支持

Chrome从32开始

Mozilla Firefox从37开始

Safari - 不支持(10.1.2似乎使用x-webkit-deflate-frame)

Microsoft Edge - 自版本40起不受支持

已知的服务器支持

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值