弹簧靴2-Webflux-Websocket-Netty-压缩
我正在使用弹簧靴2-Webflux-Websocket-Netty-压缩,websocket,compression,netty,Websocket,Compression,Netty,我正在使用 spring boot starter web 2.3.1 spring webflux 5.2.7 弹簧启动启动器反应器netty 2.3.1 我试图在WebSocket响应上使用Sec WebSocket Extensions:permessage deflate。 Netty自修复以来支持websocket解压缩( 但它不起作用(即,服务器不使用请求头中建议的permessagedeflate) 然而,当我将jetty与spring boot starter jetty一起
- spring boot starter web 2.3.1
- spring webflux 5.2.7
- 弹簧启动启动器反应器netty 2.3.1
Sec WebSocket Extensions:permessage deflate
。
Netty自修复以来支持websocket解压缩(
但它不起作用(即,服务器不使用请求头中建议的permessagedeflate
)
然而,当我将jetty与spring boot starter jetty
一起使用时,它是开箱即用的,不需要额外的配置
有人知道如何解决这个问题吗?谢谢!查看spring webflux框架后,默认情况下在reactor netty中禁用压缩。实际上,类的
ReactorNettyRequestUpgradeStrategy
创建了类参数值的实例(compression=false)
检查谓词websocketClientSpec.compress()
以建立压缩支持
因此需要激活参数websocketClientSpec.compress
@Bean
public WebSocketHandlerAdapter handlerAdapter(WebSocketService webSocketService) {
return new WebSocketHandlerAdapter(webSocketService);
}
@Bean
public WebSocketService webSocketService() {
return new HandshakeWebSocketService(
new ReactorNettyRequestUpgradeStrategy(WebsocketServerSpec.builder().compress(true)));
}
握手的结果是:
查看spring webflux框架后,默认情况下在reactor netty中禁用压缩。实际上,类的
ReactorNettyRequestUpgradeStrategy
创建类参数值的实例(压缩=false)
检查谓词websocketClientSpec.compress()
以建立压缩支持
因此需要激活参数websocketClientSpec.compress
@Bean
public WebSocketHandlerAdapter handlerAdapter(WebSocketService webSocketService) {
return new WebSocketHandlerAdapter(webSocketService);
}
@Bean
public WebSocketService webSocketService() {
return new HandshakeWebSocketService(
new ReactorNettyRequestUpgradeStrategy(WebsocketServerSpec.builder().compress(true)));
}
握手的结果是: