diff --git a/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_websocket_2_5_4.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_websocket_2_5_4.xml new file mode 100644 index 000000000..3b4a88919 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_websocket_2_5_4.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_spring_messaging_5_3_9.xml b/.idea/libraries/Maven__org_springframework_spring_messaging_5_3_9.xml new file mode 100644 index 000000000..ea46c2cba --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_spring_messaging_5_3_9.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_spring_websocket_5_3_9.xml b/.idea/libraries/Maven__org_springframework_spring_websocket_5_3_9.xml new file mode 100644 index 000000000..c3c39879d --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_spring_websocket_5_3_9.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/demo.iml b/demo.iml index e164b4e83..1d1385e1c 100644 --- a/demo.iml +++ b/demo.iml @@ -60,6 +60,9 @@ + + + diff --git a/pom.xml b/pom.xml index df0fbc8ef..f0602ffd1 100644 --- a/pom.xml +++ b/pom.xml @@ -25,7 +25,10 @@ org.springframework.boot spring-boot-starter-web - + + org.springframework.boot + spring-boot-starter-websocket + org.springframework.boot spring-boot-devtools diff --git a/src/main/java/com/example/demo/WebsocketApplication.java b/src/main/java/com/example/demo/WebsocketApplication.java new file mode 100644 index 000000000..845009345 --- /dev/null +++ b/src/main/java/com/example/demo/WebsocketApplication.java @@ -0,0 +1,27 @@ +package com.example.demo; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.Bean; +import org.springframework.web.servlet.config.annotation.CorsRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; + +@SpringBootApplication +public class WebsocketApplication { + + public static void main(String[] args) { + SpringApplication.run(WebsocketApplication.class, args); + } + + @Bean + public WebMvcConfigurer corsConfigurer() { + return new WebMvcConfigurer() { + @Override + public void addCorsMappings(CorsRegistry registry) { + registry.addMapping("/**").allowCredentials(true).allowedOrigins("*").allowedMethods("*"); + } + }; + } +} + diff --git a/src/main/java/com/example/demo/config/WebSocketConfig.java b/src/main/java/com/example/demo/config/WebSocketConfig.java new file mode 100644 index 000000000..9efe38e77 --- /dev/null +++ b/src/main/java/com/example/demo/config/WebSocketConfig.java @@ -0,0 +1,24 @@ +package com.example.demo.config; + +import org.springframework.context.annotation.Configuration; +import org.springframework.messaging.simp.config.MessageBrokerRegistry; +import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBroker; +import org.springframework.web.socket.config.annotation.StompEndpointRegistry; +import org.springframework.web.socket.config.annotation.WebSocketMessageBrokerConfigurer; + +@Configuration +@EnableWebSocketMessageBroker +public class WebSocketConfig implements WebSocketMessageBrokerConfigurer { + @Override + public void registerStompEndpoints(StompEndpointRegistry stompEndpointRegistry) { + stompEndpointRegistry.addEndpoint("/websocket-chat") + .setAllowedOrigins("*") + .withSockJS(); + } + + @Override + public void configureMessageBroker(MessageBrokerRegistry registry) { + registry.enableSimpleBroker("/topic/"); + registry.setApplicationDestinationPrefixes("/app"); + } +} \ No newline at end of file diff --git a/src/main/java/com/example/demo/controller/SocketController.java b/src/main/java/com/example/demo/controller/SocketController.java new file mode 100644 index 000000000..a608632ed --- /dev/null +++ b/src/main/java/com/example/demo/controller/SocketController.java @@ -0,0 +1,17 @@ +package com.example.demo.controller; + +import org.springframework.messaging.Message; +import org.springframework.messaging.handler.annotation.MessageMapping; +import org.springframework.messaging.handler.annotation.Payload; +import org.springframework.messaging.handler.annotation.SendTo; +import org.springframework.stereotype.Controller; + +@Controller +public class SocketController { + + @MessageMapping("/profile-all") + @SendTo("/topic/profile") + public Message send(@Payload Message message) { + return message; + } +} \ No newline at end of file diff --git a/src/test/java/com/example/demo/models/TestChannel.java b/src/test/java/com/example/demo/models/TestChannel.java index fe39d01ec..43300ee9b 100644 --- a/src/test/java/com/example/demo/models/TestChannel.java +++ b/src/test/java/com/example/demo/models/TestChannel.java @@ -1,4 +1,5 @@ package com.example.demo.models; public class TestChannel { + }