1

我想使用 websocket 和 rsocket 在 netty 环境中的服务器端启用 permessage-deflate 压缩。我现在的握手是这样的:

在此处输入图像描述

我正在使用依赖项:

 <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-websocket</artifactId>
        <version>5.2.2.RELEASE</version>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-messaging</artifactId>
        <version>5.2.2.RELEASE</version>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-rsocket</artifactId>
    </dependency>

spring boot 中是否有任何属性支持此功能?

4

1 回答 1

0

默认情况下,在 netty 环境中的服务器端禁用 permessage-deflate 压缩。您需要WebSocketService使用 reactor-netty 定义一个 bean 并将压缩设置为 true 以激活它:

@Bean
public WebSocketHandlerAdapter handlerAdapter(WebSocketService webSocketService) {
    return new WebSocketHandlerAdapter(webSocketService);
}
@Bean
public WebSocketService webSocketService() {
    return new HandshakeWebSocketService(
    new ReactorNettyRequestUpgradeStrategy(WebsocketServerSpec.builder().compress(true)));
}

在此处输入图像描述

于 2021-01-06T16:08:26.357 回答