Spring Boot 2 - Webflux - Websocket - 激活压缩

2024-01-07

我在用着:

  • Spring Boot 2.1.0 发布
  • Webflux(不是 MVC)
  • 网络套接字
  • 反应式网络

我想用“GZIP”(或任何其他压缩)压缩返回的有效负载。我尝试过 application.yml 中的配置:

server.compression.enabled: true

但返回的有效负载仍然是纯文本形式。

有人知道如何解决这个问题吗?谢谢。


The server.compression.enabled配置属性是关于HTTP响应压缩的,所以这不会达到预期的目标。

使用 WebSocket,您可以使用协议扩展激活每消息压缩,前提是您选择的容器支持该压缩。这必须在握手期间使用客户端和服务器之间进行协商Sec-WebSocket-Extensions。因此,就您而言,激活它还不够,您还需要在客户端上启用它。看rfc7692 https://www.rfc-editor.org/rfc/rfc7692.

某些容器(例如最近版本中的 Jetty)默认启用这些压缩扩展。就 Reactor Netty 而言,我不确定情况是否如此。

对于后续步骤,您可以:

  • 检查您的客户端是否正在发送该标头并支持此协议扩展
  • 切换到 Jetty 检查这是否可以开箱即用
  • 如果它适用于 Jetty 而不适用于 Reactor Netty,那么您应该在他们的问题跟踪器上创建问题 https://github.com/reactor/reactor-netty/issues因为 Netty 基础设施的一部分可能会丢失(WebSocketServerCompressionHandler?)

Edit

我已经创建了反应器/反应器-netty#507 https://github.com/reactor/reactor-netty/issues/507.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring Boot 2 - Webflux - Websocket - 激活压缩 的相关文章

随机推荐