Sets maxFramePayloadLength and proxyPing for WebSocketService.
It does this by reusing WebSocket properties for a new `ReactorNettyRequestUpgradeStrategy` bean. Fixes gh-1610 Fixes gh-1611
This commit is contained in:
committed by
Spencer Gibb
parent
2a7426025e
commit
10479fa821
@@ -151,8 +151,10 @@ import org.springframework.validation.Validator;
|
||||
import org.springframework.web.reactive.DispatcherHandler;
|
||||
import org.springframework.web.reactive.socket.client.ReactorNettyWebSocketClient;
|
||||
import org.springframework.web.reactive.socket.client.WebSocketClient;
|
||||
import org.springframework.web.reactive.socket.server.RequestUpgradeStrategy;
|
||||
import org.springframework.web.reactive.socket.server.WebSocketService;
|
||||
import org.springframework.web.reactive.socket.server.support.HandshakeWebSocketService;
|
||||
import org.springframework.web.reactive.socket.server.upgrade.ReactorNettyRequestUpgradeStrategy;
|
||||
|
||||
import static org.springframework.cloud.gateway.config.HttpClientProperties.Pool.PoolType.DISABLED;
|
||||
import static org.springframework.cloud.gateway.config.HttpClientProperties.Pool.PoolType.FIXED;
|
||||
@@ -315,8 +317,9 @@ public class GatewayAutoConfiguration {
|
||||
}
|
||||
|
||||
@Bean
|
||||
public WebSocketService webSocketService() {
|
||||
return new HandshakeWebSocketService();
|
||||
public WebSocketService webSocketService(
|
||||
RequestUpgradeStrategy requestUpgradeStrategy) {
|
||||
return new HandshakeWebSocketService(requestUpgradeStrategy);
|
||||
}
|
||||
|
||||
@Bean
|
||||
@@ -739,6 +742,20 @@ public class GatewayAutoConfiguration {
|
||||
return webSocketClient;
|
||||
}
|
||||
|
||||
@Bean
|
||||
public ReactorNettyRequestUpgradeStrategy reactorNettyRequestUpgradeStrategy(
|
||||
HttpClientProperties httpClientProperties) {
|
||||
ReactorNettyRequestUpgradeStrategy requestUpgradeStrategy = new ReactorNettyRequestUpgradeStrategy();
|
||||
|
||||
HttpClientProperties.Websocket websocket = httpClientProperties
|
||||
.getWebsocket();
|
||||
PropertyMapper map = PropertyMapper.get();
|
||||
map.from(websocket::getMaxFramePayloadLength).whenNonNull()
|
||||
.to(requestUpgradeStrategy::setMaxFramePayloadLength);
|
||||
map.from(websocket::isProxyPing).to(requestUpgradeStrategy::setHandlePing);
|
||||
return requestUpgradeStrategy;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Configuration(proxyBeanMethods = false)
|
||||
|
||||
@@ -36,6 +36,7 @@ import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.web.filter.reactive.HiddenHttpMethodFilter;
|
||||
import org.springframework.web.reactive.socket.client.ReactorNettyWebSocketClient;
|
||||
import org.springframework.web.reactive.socket.server.upgrade.ReactorNettyRequestUpgradeStrategy;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
@@ -118,6 +119,13 @@ public class GatewayAutoConfigurationTests {
|
||||
* assertThat(sslContext).isNotNull();
|
||||
*/
|
||||
// TODO: howto test SslContext
|
||||
assertThat(context)
|
||||
.hasSingleBean(ReactorNettyRequestUpgradeStrategy.class);
|
||||
ReactorNettyRequestUpgradeStrategy upgradeStrategy = context
|
||||
.getBean(ReactorNettyRequestUpgradeStrategy.class);
|
||||
assertThat(upgradeStrategy.getMaxFramePayloadLength())
|
||||
.isEqualTo(1024);
|
||||
assertThat(upgradeStrategy.getHandlePing()).isTrue();
|
||||
assertThat(context).hasSingleBean(ReactorNettyWebSocketClient.class);
|
||||
ReactorNettyWebSocketClient webSocketClient = context
|
||||
.getBean(ReactorNettyWebSocketClient.class);
|
||||
|
||||
Reference in New Issue
Block a user