首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring配置:如何将WebSocketMessageBrokerConfigurationSupport和WebSocketConfigurer结合使用?

Spring配置:如何将WebSocketMessageBrokerConfigurationSupport和WebSocketConfigurer结合使用?
EN

Stack Overflow用户
提问于 2017-04-26 15:00:53
回答 1查看 5.4K关注 0票数 5

目前,我正在使用类配置Spring

代码语言:javascript
复制
public class WebSocketConfig extends WebSocketMessageBrokerConfigurationSupport

现在我发现了Spring STOMP Websockets: any way to enable permessage-deflate on server side?的建议

利用……

代码语言:javascript
复制
public class SampleJettyWebSocketsApplication implements WebSocketConfigurer 

和越权

代码语言:javascript
复制
@Override
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry)

和提议

代码语言:javascript
复制
@Bean
public DefaultHandshakeHandler handshakeHandler() 

WebSocketConfigurerWebSocketMessageBrokerConfigurationSupport?之间的关系是什么?换句话说,我是否可以通过第一类的API WebSocketMessageBrokerConfigurationSupport从WebSocketMessageBrokerConfigurationSupport实现中添加配置,所以所有配置都保留在一个文件中?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-26 17:30:15

WebSocketMessageBrokerConfigurationSupport实现是通过@EnableWebSocketMessageBroker配置的DelegatingWebSocketMessageBrokerConfiguration。在您的自定义代码中,您所需要的只是WebSocketMessageBrokerConfigurer实现。而那个被注入DelegatingWebSocketMessageBrokerConfiguration

代码语言:javascript
复制
@Autowired(required = false)
public void setConfigurers(List<WebSocketMessageBrokerConfigurer> configurers) {

这是我的测试用例中的一个示例配置:

代码语言:javascript
复制
@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");
    }


}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43637864

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档