Ask*_*mov 5 spring jetty websocket spring-websocket java-websocket
我目前正在使用该类配置我的 Spring Websocket
public class WebSocketConfig extends WebSocketMessageBrokerConfigurationSupport
Run Code Online (Sandbox Code Playgroud)
现在我遇到了建议 Spring STOMP Websockets: any way to enable permessage-deflate on server side?
这利用
public class SampleJettyWebSocketsApplication implements WebSocketConfigurer
Run Code Online (Sandbox Code Playgroud)
并覆盖
@Override
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry)
Run Code Online (Sandbox Code Playgroud)
并提供
@Bean
public DefaultHandshakeHandler handshakeHandler()
Run Code Online (Sandbox Code Playgroud)
问题,WebSocketConfigurer和WebSocketMessageBrokerConfigurationSupport是什么关系?换句话说,我是否可以通过第一类 WebSocketMessageBrokerConfigurationSupport 的 API 从 WebSocketConfigurer 实现中添加配置,以便所有配置都保留在一个文件中?
实现WebSocketMessageBrokerConfigurationSupport是DelegatingWebSocketMessageBrokerConfiguration通过配置的@EnableWebSocketMessageBroker。您在自定义代码中所需要的只是WebSocketMessageBrokerConfigurer实现。那个被注入DelegatingWebSocketMessageBrokerConfiguration:
@Autowired(required = false)
public void setConfigurers(List<WebSocketMessageBrokerConfigurer> configurers) {
Run Code Online (Sandbox Code Playgroud)
这是我的测试用例中的示例配置:
@Configuration
@EnableWebSocketMessageBroker
static class ServerConfig extends AbstractWebSocketMessageBrokerConfigurer {
@Bean
public DefaultHandshakeHandler handshakeHandler() {
return new DefaultHandshakeHandler(new TomcatRequestUpgradeStrategy());
}
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/ws")
.setHandshakeHandler(handshakeHandler())
.setAllowedOrigins("http://foo.com")
.addInterceptors(new HandshakeInterceptor() {
@Override
public boolean beforeHandshake(ServerHttpRequest request, ServerHttpResponse response,
WebSocketHandler wsHandler, Map<String, Object> attributes) throws Exception {
return request.getHeaders().getOrigin() != null;
}
@Override
public void afterHandshake(ServerHttpRequest request, ServerHttpResponse response,
WebSocketHandler wsHandler, Exception exception) {
}
})
.withSockJS();
}
@Override
public void configureMessageBroker(MessageBrokerRegistry configurer) {
configurer.setApplicationDestinationPrefixes("/app")
.enableSimpleBroker("/topic", "/queue");
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4229 次 |
| 最近记录: |