package ch.rasc.s4ws; import java.util.concurrent.Executors; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.Bean; import org.springframework.messaging.simp.config.MessageBrokerRegistry; import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.scheduling.annotation.SchedulingConfigurer; import org.springframework.scheduling.concurrent.ConcurrentTaskScheduler; import org.springframework.scheduling.config.ScheduledTaskRegistrar; import org.springframework.web.socket.config.annotation.AbstractWebSocketMessageBrokerConfigurer; import org.springframework.web.socket.config.annotation.EnableWebSocket; import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBroker; import org.springframework.web.socket.config.annotation.StompEndpointRegistry; import org.springframework.web.socket.server.standard.ServletServerContainerFactoryBean; @SpringBootApplication @EnableWebSocket @EnableWebSocketMessageBroker @EnableScheduling public class Spring4WebSocketExamplesApplication extends AbstractWebSocketMessageBrokerConfigurer implements SchedulingConfigurer { public static void main(String[] args) { System.setProperty("spring.profiles.active", "development"); SpringApplication.run(Spring4WebSocketExamplesApplication.class, args); } @Bean public ServletServerContainerFactoryBean createWebSocketContainer() { ServletServerContainerFactoryBean container = new ServletServerContainerFactoryBean(); container.setMaxTextMessageBufferSize(1_000_000); container.setMaxBinaryMessageBufferSize(1_000_000); return container; } @Override public void registerStompEndpoints(StompEndpointRegistry registry) { registry.addEndpoint("/stomp"); registry.addEndpoint("/sockjs").withSockJS(); } @Override public void configureMessageBroker(MessageBrokerRegistry registry) { registry.setApplicationDestinationPrefixes("/app"); } @Override public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { taskRegistrar.setTaskScheduler(new ConcurrentTaskScheduler( Executors.newSingleThreadScheduledExecutor())); } }