From 6866b51d52b8edc4ebceb77bcbe51c8b7ae8d562 Mon Sep 17 00:00:00 2001 From: Philippe Soares Date: Sun, 8 Nov 2020 11:38:17 -0500 Subject: [PATCH] Put html and js resources back to their original location. Split backend code so it doesn't modify existing examples. Added a bots.html page for the server push version. --- .../baeldung/websockets/BotsController.java | 21 +++++ .../ReactiveScheduledPushMessages.java | 2 +- .../websockets/ScheduledPushMessages.java | 5 +- .../baeldung/websockets/WebSocketConfig.java | 2 + spring-websockets/src/main/webapp/bots.html | 88 +++++++++++++++++++ .../resources}/js/sockjs-0.3.4.js | 0 .../public => webapp/resources}/js/stomp.js | 0 .../resources}/js/webSocketSendToUserApp.js | 0 8 files changed, 115 insertions(+), 3 deletions(-) create mode 100644 spring-websockets/src/main/java/com/baeldung/websockets/BotsController.java create mode 100644 spring-websockets/src/main/webapp/bots.html rename spring-websockets/src/main/{resources/public => webapp/resources}/js/sockjs-0.3.4.js (100%) rename spring-websockets/src/main/{resources/public => webapp/resources}/js/stomp.js (100%) rename spring-websockets/src/main/{resources/public => webapp/resources}/js/webSocketSendToUserApp.js (100%) diff --git a/spring-websockets/src/main/java/com/baeldung/websockets/BotsController.java b/spring-websockets/src/main/java/com/baeldung/websockets/BotsController.java new file mode 100644 index 0000000000..3f268f3794 --- /dev/null +++ b/spring-websockets/src/main/java/com/baeldung/websockets/BotsController.java @@ -0,0 +1,21 @@ +package com.baeldung.websockets; + +import org.springframework.messaging.handler.annotation.MessageMapping; +import org.springframework.messaging.handler.annotation.SendTo; +import org.springframework.stereotype.Controller; + +import java.text.SimpleDateFormat; +import java.util.Date; + +@Controller +public class BotsController { + + @MessageMapping("/chatwithbots") + @SendTo("/topic/pushmessages") + public OutputMessage send(final Message message) throws Exception { + + final String time = new SimpleDateFormat("HH:mm").format(new Date()); + return new OutputMessage(message.getFrom(), message.getText(), time); + } + +} diff --git a/spring-websockets/src/main/java/com/baeldung/websockets/ReactiveScheduledPushMessages.java b/spring-websockets/src/main/java/com/baeldung/websockets/ReactiveScheduledPushMessages.java index cfaf981d96..36b1b886fc 100644 --- a/spring-websockets/src/main/java/com/baeldung/websockets/ReactiveScheduledPushMessages.java +++ b/spring-websockets/src/main/java/com/baeldung/websockets/ReactiveScheduledPushMessages.java @@ -27,6 +27,6 @@ public class ReactiveScheduledPushMessages implements InitializingBean { Flux.interval(Duration.ofSeconds(4L)) .map((n) -> new OutputMessage(faker.backToTheFuture().character(), faker.backToTheFuture().quote(), new SimpleDateFormat("HH:mm").format(new Date()))) - .subscribe(message -> simpMessagingTemplate.convertAndSend("/topic/messages", message)); + .subscribe(message -> simpMessagingTemplate.convertAndSend("/topic/pushmessages", message)); } } diff --git a/spring-websockets/src/main/java/com/baeldung/websockets/ScheduledPushMessages.java b/spring-websockets/src/main/java/com/baeldung/websockets/ScheduledPushMessages.java index 3e27d840d9..2468b69713 100644 --- a/spring-websockets/src/main/java/com/baeldung/websockets/ScheduledPushMessages.java +++ b/spring-websockets/src/main/java/com/baeldung/websockets/ScheduledPushMessages.java @@ -5,11 +5,12 @@ import com.github.javafaker.Faker; import org.springframework.messaging.simp.SimpMessagingTemplate; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Controller; +import org.springframework.stereotype.Service; import java.text.SimpleDateFormat; import java.util.Date; -@Controller +@Service public class ScheduledPushMessages { private final SimpMessagingTemplate simpMessagingTemplate; @@ -24,7 +25,7 @@ public class ScheduledPushMessages { @Scheduled(fixedRate = 5000) public void sendMessage() { final String time = new SimpleDateFormat("HH:mm").format(new Date()); - simpMessagingTemplate.convertAndSend("/topic/messages", + simpMessagingTemplate.convertAndSend("/topic/pushmessages", new OutputMessage("Chuck Norris", faker.chuckNorris().fact(), time)); } diff --git a/spring-websockets/src/main/java/com/baeldung/websockets/WebSocketConfig.java b/spring-websockets/src/main/java/com/baeldung/websockets/WebSocketConfig.java index 7b53dbc3f3..6179ec9c0d 100644 --- a/spring-websockets/src/main/java/com/baeldung/websockets/WebSocketConfig.java +++ b/spring-websockets/src/main/java/com/baeldung/websockets/WebSocketConfig.java @@ -20,6 +20,8 @@ public class WebSocketConfig implements WebSocketMessageBrokerConfigurer { public void registerStompEndpoints(final StompEndpointRegistry registry) { registry.addEndpoint("/chat"); registry.addEndpoint("/chat").withSockJS(); + registry.addEndpoint("/chatwithbots"); + registry.addEndpoint("/chatwithbots").withSockJS(); } } \ No newline at end of file diff --git a/spring-websockets/src/main/webapp/bots.html b/spring-websockets/src/main/webapp/bots.html new file mode 100644 index 0000000000..38570d420c --- /dev/null +++ b/spring-websockets/src/main/webapp/bots.html @@ -0,0 +1,88 @@ + + + Chat WebSocket + + + + + + + + + + +
+ + +
+ +
+
+
+ + +
+
+
+ + +

+
+
+ + + \ No newline at end of file diff --git a/spring-websockets/src/main/resources/public/js/sockjs-0.3.4.js b/spring-websockets/src/main/webapp/resources/js/sockjs-0.3.4.js similarity index 100% rename from spring-websockets/src/main/resources/public/js/sockjs-0.3.4.js rename to spring-websockets/src/main/webapp/resources/js/sockjs-0.3.4.js diff --git a/spring-websockets/src/main/resources/public/js/stomp.js b/spring-websockets/src/main/webapp/resources/js/stomp.js similarity index 100% rename from spring-websockets/src/main/resources/public/js/stomp.js rename to spring-websockets/src/main/webapp/resources/js/stomp.js diff --git a/spring-websockets/src/main/resources/public/js/webSocketSendToUserApp.js b/spring-websockets/src/main/webapp/resources/js/webSocketSendToUserApp.js similarity index 100% rename from spring-websockets/src/main/resources/public/js/webSocketSendToUserApp.js rename to spring-websockets/src/main/webapp/resources/js/webSocketSendToUserApp.js