我在用着:
- 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(使用前将#替换为@)