使用内部消息放气更好的WebSocket压缩

时间:2018-09-05 09:54:51

标签: websocket compression deflate

我相信所有现代浏览器都支持“ permessage-deflate”形式的websocket压缩。但是,据我所知(顾名思义),这仅会分别压缩每个消息。就我而言(而且,我通常会以为是),因为我发送了许多小的JSON消息,所以这没什么用。

是否有当前或提议的浏览器功能来进行连续压缩?我的研究发现实验性的Websocket扩展名为deflate-stream和deflate-application-data,但它们似乎已经死了。例如,deflate-stream已从FireFox in 2011中删除。这很奇怪,因为它非常有用。

我当前的瓶颈是网络带宽,我认为我的应用程序可以从连续(即“消息内”)压缩中受益匪浅。例如,我最常见的消息通常至少每秒发送一次,并且成千上万个Web套接字开始使100Mbit连接超载。看起来像这样(不带空格):

{
    "Response": "i",
    "Data": {
        "AlwaysSameId": 12345678,
        "Type": 0,
        "Style": 0,
        "Name": "long.similar.names.often.the.same",
        "Time": 1532492191000000
    }
}

,其中大多数字段总是或通常是相同的,只有时间字段总是在变化(但仍然相似)。我的测试表明,使用“消息内”压缩可以将JSON压缩95%(比原来小20倍!),但是“按消息”压缩几乎没有减少(因为必须使用deflate字典)每次发送)。

我可以在更高级别上实现自己的“消息内”压缩。 (我之前在C中使用zlib 1.2.3做了这种事情。)这可能有点乏味,因为我必须实现两端,或者至少实现大多数数据的方向,即在后端(Golang)和在前端(Javascript)中解压缩。

我只是在咨询和澄清有关websocket压缩的情况。

0 个答案:

没有答案