【问题标题】:Jetty 9.4.26 - gzip compression for websocket byte messagesJetty 9.4.26 - 用于 websocket 字节消息的 gzip 压缩
【发布时间】:2020-02-25 19:42:56
【问题描述】:

我正在使用带有 --module=gzip 的 jetty 9.4.26 在我的所有服务器应用程序上启用压缩。我正在向 websocket 客户端发送大量字节消息(不是字符串)(很小,但每个客户端每秒数十条消息),我不确定压缩是否应用于每个 websocket 消息,因为我注意到几乎翻了一番CPU 使用率(我并没有消除所有可能性,但这是我更改的唯一可能影响 cpu 的东西)。

如果是这样,有没有办法只为 websocket 禁用 gzip?

【问题讨论】:

    标签: websocket compression jetty gzip


    【解决方案1】:

    websocket 消息的压缩是通过 websocket 会话本身的 permessage-deflate 扩展来完成的。

    见:https://*.com/a/19300336/775715

    HTTP gzip 压缩(这是--module=gzip 启用的)完全不相关。

    请记住,websocket 是对 websocket 的 HTTP 升级,一旦升级到 WebSocket,HTTP HTTP 行为将不再起作用。

    【讨论】:

    • 所以如果我理解正确的话,默认情况下没有启用该扩展,这意味着向客户端发送 webscoket 消息时不需要额外的 CPU?
    • Jetty 默认在其注册扩展列表中具有permessage-deflate 扩展,如果客户端选择使用它并在其 WebSocket 升级报价中发送它,那么 Jetty 将响应并使用它。它将使用 CPU 将 websocket 消息压缩到客户端并解压缩来自客户端的 websocket 消息。
    • 所以如果我想使用这个扩展,我会在提出升级请求时发送“permessage-deflate”标头值?
    最近更新 更多