package com.cloudroam.module.message; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.socket.config.annotation.EnableWebSocket; import org.springframework.web.socket.config.annotation.WebSocketConfigurer; import org.springframework.web.socket.config.annotation.WebSocketHandlerRegistry; /** * @author * websocket 配置类 */ @Configuration @ConditionalOnProperty(prefix = "lin.cms.websocket", value = "enable", havingValue = "true") @EnableWebSocket public class WebsocketConfiguration implements WebSocketConfigurer { @Value("${lin.cms.websocket.intercept:false}") private boolean intercepted; @Bean public MessageWebSocketHandler messageWebSocketHandler() { return new MessageWebSocketHandler(); } @Bean public WsHandler wsHandler() { return new WsHandlerImpl(); } @Bean @ConditionalOnProperty(prefix = "lin.cms.websocket", value = "intercept", havingValue = "true") public WebSocketInterceptor webSocketInterceptor() { return new WebSocketInterceptor(); } @Override public void registerWebSocketHandlers(WebSocketHandlerRegistry handlerRegistry) { if (intercepted) { handlerRegistry.addHandler(messageWebSocketHandler(), "ws/message") .addInterceptors(webSocketInterceptor()) .setAllowedOrigins("*"); } else { handlerRegistry.addHandler(messageWebSocketHandler(), "ws/message") .setAllowedOrigins("*"); } } }