对于最新稳定版本,请使用 Spring Framework 7.0.6spring-doc.cadn.net.cn

WebSocket 传输

本节说明如何配置底层的 WebSocket 服务器传输。spring-doc.cadn.net.cn

对于 Jakarta WebSocket 服务器,请在您的配置中添加一个 ServletServerContainerFactoryBean。示例请参见 WebSocket 章节下的 配置服务器spring-doc.cadn.net.cn

对于 Jetty WebSocket 服务器,请按如下方式自定义 JettyRequestUpgradeStrategyspring-doc.cadn.net.cn

@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {

	@Override
	public void registerStompEndpoints(StompEndpointRegistry registry) {
		registry.addEndpoint("/portfolio").setHandshakeHandler(handshakeHandler());
	}

	@Bean
	public DefaultHandshakeHandler handshakeHandler() {

		WebSocketPolicy policy = new WebSocketPolicy(WebSocketBehavior.SERVER);
		policy.setInputBufferSize(8192);
		policy.setIdleTimeout(600000);

		return new DefaultHandshakeHandler(
				new JettyRequestUpgradeStrategy(new WebSocketServerFactory(policy)));
	}
}

除了 WebSocket 服务器属性外,还有 STOMP WebSocket 传输属性可供自定义,如下所示:spring-doc.cadn.net.cn

@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {

	@Override
	public void configureWebSocketTransport(WebSocketTransportRegistration registry) {
		registry.setMessageSizeLimit(4 * 8192);
		registry.setTimeToFirstMessage(30000);
	}

}