package web.multitask.trismegistoservices.config; import org.springframework.context.annotation.Configuration; import org.springframework.messaging.simp.config.ChannelRegistration; import org.springframework.messaging.simp.config.MessageBrokerRegistry; import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler; import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBroker; import org.springframework.web.socket.config.annotation.StompEndpointRegistry; import org.springframework.web.socket.config.annotation.WebSocketMessageBrokerConfigurer; import web.multitask.trismegistoservices.filter.AuthChannelInterceptorAdapter; @Configuration @EnableWebSocketMessageBroker public class WebSocketConfig implements WebSocketMessageBrokerConfigurer { private final AuthChannelInterceptorAdapter authChannelInterceptorAdapter; public WebSocketConfig(AuthChannelInterceptorAdapter authChannelInterceptorAdapter) { this.authChannelInterceptorAdapter = authChannelInterceptorAdapter; } @Override public void configureMessageBroker(MessageBrokerRegistry registry) { ThreadPoolTaskScheduler taskScheduler = new ThreadPoolTaskScheduler(); taskScheduler.setPoolSize(1); taskScheduler.setThreadNamePrefix("wss-heartbeat-thread-"); taskScheduler.initialize(); registry.enableSimpleBroker("/topic") .setHeartbeatValue(new long[]{10000, 10000}) .setTaskScheduler(taskScheduler); registry.setApplicationDestinationPrefixes("/ws"); } @Override public void registerStompEndpoints(StompEndpointRegistry registry) { registry.addEndpoint("websocket").setAllowedOrigins("*"); } @Override public void configureClientInboundChannel(ChannelRegistration registration) { registration.interceptors(authChannelInterceptorAdapter); } }