From d6e00794793873df6fdf05d7eefaceabd660d744 Mon Sep 17 00:00:00 2001 From: yennanliu Date: Sun, 12 Nov 2023 20:25:25 +0800 Subject: [PATCH 1/5] remove code, fix class name, add ci for chatroom service --- .github/workflows/maven_chatroom.yaml | 31 +++++++++++++++++++ .../{model => bean}/ChatMessage.java | 2 +- .../yen/springChatRoom/bean/OnlineUser.java | 2 -- .../config/WebSocketConfig.java | 1 + .../controller/ChatController.java | 9 +----- .../listener/WebSocketEventListener.java | 2 +- .../redis/RedisListenerHandle.java | 29 +---------------- .../springChatRoom/service/ChatService.java | 3 +- 8 files changed, 37 insertions(+), 42 deletions(-) create mode 100644 .github/workflows/maven_chatroom.yaml rename springChatRoom/src/main/java/com/yen/springChatRoom/{model => bean}/ChatMessage.java (95%) diff --git a/.github/workflows/maven_chatroom.yaml b/.github/workflows/maven_chatroom.yaml new file mode 100644 index 000000000..0352c28bb --- /dev/null +++ b/.github/workflows/maven_chatroom.yaml @@ -0,0 +1,31 @@ +# This workflow will build a Java project with Maven, and cache/restore any dependencies to improve the workflow execution time +# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-java-with-maven + +# This workflow uses actions that are not certified by GitHub. +# They are provided by a third-party and are governed by +# separate terms of service, privacy policy, and support +# documentation. + +name: (ChatRoom service) Java CI with Maven + +on: + push: + branches: [ "main" ] + pull_request: + branches: [ "main" ] + +jobs: + build: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + - name: Set up JDK 17 + uses: actions/setup-java@v3 + with: + java-version: '17' + distribution: 'temurin' + cache: maven + - name: Build with Maven + run: rm -rf ~/.m2 && cd springChatRoom && mvn -DskipTests=true package \ No newline at end of file diff --git a/springChatRoom/src/main/java/com/yen/springChatRoom/model/ChatMessage.java b/springChatRoom/src/main/java/com/yen/springChatRoom/bean/ChatMessage.java similarity index 95% rename from springChatRoom/src/main/java/com/yen/springChatRoom/model/ChatMessage.java rename to springChatRoom/src/main/java/com/yen/springChatRoom/bean/ChatMessage.java index e792fd2cb..4271b2cfb 100644 --- a/springChatRoom/src/main/java/com/yen/springChatRoom/model/ChatMessage.java +++ b/springChatRoom/src/main/java/com/yen/springChatRoom/bean/ChatMessage.java @@ -1,4 +1,4 @@ -package com.yen.springChatRoom.model; +package com.yen.springChatRoom.bean; public class ChatMessage { private MessageType type; diff --git a/springChatRoom/src/main/java/com/yen/springChatRoom/bean/OnlineUser.java b/springChatRoom/src/main/java/com/yen/springChatRoom/bean/OnlineUser.java index f64dcda35..a4da09167 100644 --- a/springChatRoom/src/main/java/com/yen/springChatRoom/bean/OnlineUser.java +++ b/springChatRoom/src/main/java/com/yen/springChatRoom/bean/OnlineUser.java @@ -1,8 +1,6 @@ package com.yen.springChatRoom.bean; -import java.util.HashSet; import java.util.List; -import java.util.Set; public class OnlineUser { diff --git a/springChatRoom/src/main/java/com/yen/springChatRoom/config/WebSocketConfig.java b/springChatRoom/src/main/java/com/yen/springChatRoom/config/WebSocketConfig.java index 5b156b685..6570da6cf 100644 --- a/springChatRoom/src/main/java/com/yen/springChatRoom/config/WebSocketConfig.java +++ b/springChatRoom/src/main/java/com/yen/springChatRoom/config/WebSocketConfig.java @@ -31,4 +31,5 @@ public void configureMessageBroker(MessageBrokerRegistry registry) { registry.setApplicationDestinationPrefixes("/app"); registry.enableSimpleBroker("/topic"); } + } diff --git a/springChatRoom/src/main/java/com/yen/springChatRoom/controller/ChatController.java b/springChatRoom/src/main/java/com/yen/springChatRoom/controller/ChatController.java index 27a94ffce..9f08febe6 100644 --- a/springChatRoom/src/main/java/com/yen/springChatRoom/controller/ChatController.java +++ b/springChatRoom/src/main/java/com/yen/springChatRoom/controller/ChatController.java @@ -1,20 +1,16 @@ package com.yen.springChatRoom.controller; -import com.yen.springChatRoom.model.ChatMessage; +import com.yen.springChatRoom.bean.ChatMessage; import com.yen.springChatRoom.util.JsonUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.data.redis.core.RedisTemplate; 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; import org.springframework.messaging.simp.SimpMessageHeaderAccessor; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.web.bind.annotation.GetMapping; - -import java.util.Set; @Controller public class ChatController { @@ -71,9 +67,6 @@ public void addUser(@Payload ChatMessage chatMessage, SimpMessageHeaderAccessor headerAccessor.getSessionAttributes().put("username", chatMessage.getSender()); redisTemplate.opsForSet().add(onlineUsers, chatMessage.getSender()); redisTemplate.convertAndSend(userStatus, JsonUtil.parseObjToJson(chatMessage)); - - // show online user - } catch (Exception e) { LOGGER.error(e.getMessage(), e); } diff --git a/springChatRoom/src/main/java/com/yen/springChatRoom/listener/WebSocketEventListener.java b/springChatRoom/src/main/java/com/yen/springChatRoom/listener/WebSocketEventListener.java index 72b714d91..5c33d781d 100644 --- a/springChatRoom/src/main/java/com/yen/springChatRoom/listener/WebSocketEventListener.java +++ b/springChatRoom/src/main/java/com/yen/springChatRoom/listener/WebSocketEventListener.java @@ -1,7 +1,7 @@ package com.yen.springChatRoom.listener; import com.yen.springChatRoom.controller.ChatController; -import com.yen.springChatRoom.model.ChatMessage; +import com.yen.springChatRoom.bean.ChatMessage; import com.yen.springChatRoom.util.JsonUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/springChatRoom/src/main/java/com/yen/springChatRoom/redis/RedisListenerHandle.java b/springChatRoom/src/main/java/com/yen/springChatRoom/redis/RedisListenerHandle.java index 266f8f5ae..d8ebfc163 100644 --- a/springChatRoom/src/main/java/com/yen/springChatRoom/redis/RedisListenerHandle.java +++ b/springChatRoom/src/main/java/com/yen/springChatRoom/redis/RedisListenerHandle.java @@ -1,6 +1,6 @@ package com.yen.springChatRoom.redis; -import com.yen.springChatRoom.model.ChatMessage; +import com.yen.springChatRoom.bean.ChatMessage; import com.yen.springChatRoom.service.ChatService; import com.yen.springChatRoom.util.JsonUtil; import org.slf4j.Logger; @@ -65,31 +65,4 @@ public void onMessage(Message message, byte[] bytes) { } } -// @Override -// public void onMessage(Message message, byte[] pattern) { -// -// // super.onMessage(message, pattern); -// byte[] body = message.getBody(); -// byte[] channel = message.getChannel(); -// String rawMsg; -// String topic; -// -// try{ -// rawMsg = redisTemplate.getStringSerializer().deserialize(body); -// topic = redisTemplate.getStringSerializer().deserialize(channel); -// LOGGER.info("Receive raw msg from topic : " + topic + " , raw msg : " + rawMsg); -// }catch (Exception e){ -// LOGGER.error("Receive raw msg failed : " + e.getMessage() + e); -// return; // TODO : return custom error msg instead -// } -// -// if (msgToAll.equals(topic)){ -// LOGGER.info("Send msg to all users : " + rawMsg + ", topic = " + topic); -// ChatMessage chatMessage = JsonUtil.parseJsonToObj(rawMsg, ChatMessage.class); -// // send msg to all online users -// chatService.sendMsg(chatMessage); -// }else{ -// LOGGER.warn("Not sending msg to all user with topic : " + topic); -// } - } diff --git a/springChatRoom/src/main/java/com/yen/springChatRoom/service/ChatService.java b/springChatRoom/src/main/java/com/yen/springChatRoom/service/ChatService.java index 105f8a736..b692ed38d 100644 --- a/springChatRoom/src/main/java/com/yen/springChatRoom/service/ChatService.java +++ b/springChatRoom/src/main/java/com/yen/springChatRoom/service/ChatService.java @@ -1,13 +1,12 @@ package com.yen.springChatRoom.service; import com.yen.springChatRoom.controller.ChatController; -import com.yen.springChatRoom.model.ChatMessage; +import com.yen.springChatRoom.bean.ChatMessage; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.messaging.handler.annotation.Payload; import org.springframework.messaging.simp.SimpMessageSendingOperations; -import org.springframework.messaging.simp.broker.SimpleBrokerMessageHandler; import org.springframework.stereotype.Service; @Service From 4994cba83ae38f406d093db1fed10a1df5bb2ce4 Mon Sep 17 00:00:00 2001 From: yennanliu Date: Mon, 13 Nov 2023 16:58:05 +0800 Subject: [PATCH 2/5] add ref, clean code --- springChatRoom/doc/ref.md | 5 +- .../yen/springChatRoom/bean/OnlineUser.java | 48 +++++++++---------- .../config/WebSocketConfig.java | 8 ++++ .../controller/UserController.java | 4 +- 4 files changed, 37 insertions(+), 28 deletions(-) diff --git a/springChatRoom/doc/ref.md b/springChatRoom/doc/ref.md index 190605fce..6140297e6 100644 --- a/springChatRoom/doc/ref.md +++ b/springChatRoom/doc/ref.md @@ -23,7 +23,10 @@ - Advanced - Chat with specific user - https://www.baeldung.com/spring-websockets-send-message-to-user + - https://www.baeldung.com/spring-websockets-sendtouser + - https://github.com/eugenp/tutorials/tree/master/spring-security-modules/spring-security-web-sockets - code - https://juejin.cn/post/6844903717636947981 - - https://www.jb51.net/article/257091.htm \ No newline at end of file + - https://www.jb51.net/article/257091.htm + - https://blog.csdn.net/xm393392625/article/details/103385509 \ No newline at end of file diff --git a/springChatRoom/src/main/java/com/yen/springChatRoom/bean/OnlineUser.java b/springChatRoom/src/main/java/com/yen/springChatRoom/bean/OnlineUser.java index a4da09167..afb4f921e 100644 --- a/springChatRoom/src/main/java/com/yen/springChatRoom/bean/OnlineUser.java +++ b/springChatRoom/src/main/java/com/yen/springChatRoom/bean/OnlineUser.java @@ -1,24 +1,24 @@ -package com.yen.springChatRoom.bean; - -import java.util.List; - -public class OnlineUser { - - public OnlineUser(){ - } - - public OnlineUser(List users){ - this.users = users; - } - - private List users; - - public List getUsers() { - return users; - } - - public void setUsers(List users) { - this.users = users; - } - -} +//package com.yen.springChatRoom.bean; +// +//import java.util.List; +// +//public class OnlineUser { +// +// public OnlineUser(){ +// } +// +// public OnlineUser(List users){ +// this.users = users; +// } +// +// private List users; +// +// public List getUsers() { +// return users; +// } +// +// public void setUsers(List users) { +// this.users = users; +// } +// +//} diff --git a/springChatRoom/src/main/java/com/yen/springChatRoom/config/WebSocketConfig.java b/springChatRoom/src/main/java/com/yen/springChatRoom/config/WebSocketConfig.java index 6570da6cf..a1b1b8ef0 100644 --- a/springChatRoom/src/main/java/com/yen/springChatRoom/config/WebSocketConfig.java +++ b/springChatRoom/src/main/java/com/yen/springChatRoom/config/WebSocketConfig.java @@ -27,6 +27,14 @@ public void registerStompEndpoints(StompEndpointRegistry registry) { @Override public void configureMessageBroker(MessageBrokerRegistry registry) { + /** + * 配置訊息代理 + * enableSimpleBroker: server端推送給client端的路徑prefix (server -> client) + * setApplicationDestinationPrefixes: client端發送給server端的路徑prefix (client -> server) + * + * https://hackmd.io/@mko123654/HkySHSe35 + */ + //WebSocketMessageBrokerConfigurer.super.configureMessageBroker(registry); registry.setApplicationDestinationPrefixes("/app"); registry.enableSimpleBroker("/topic"); diff --git a/springChatRoom/src/main/java/com/yen/springChatRoom/controller/UserController.java b/springChatRoom/src/main/java/com/yen/springChatRoom/controller/UserController.java index dc2fa3864..4a806e40c 100644 --- a/springChatRoom/src/main/java/com/yen/springChatRoom/controller/UserController.java +++ b/springChatRoom/src/main/java/com/yen/springChatRoom/controller/UserController.java @@ -41,13 +41,11 @@ public List getOnlineUser(){ Set resultSet = redisTemplate.opsForSet().members(onlineUserKey); System.out.println("(getOnlineUser) resultSet = " + resultSet); // TODO : optimize below - OnlineUser onlineUser = new OnlineUser(); List users = new ArrayList<>(); resultSet.forEach(x -> { users.add(x); }); - onlineUser.setUsers(users); - return onlineUser.getUsers(); + return users; } } From 72af31c0b0240b73a1c971b793d6e40cc53e9352 Mon Sep 17 00:00:00 2001 From: yennanliu Date: Mon, 13 Nov 2023 17:24:11 +0800 Subject: [PATCH 3/5] add bean, add service logic, update conf, remove bean, update js --- .../springChatRoom/ChatRoomApplication.java | 1 - .../com/yen/springChatRoom/bean/Channel.java | 34 +++++++++++++++++++ .../com/yen/springChatRoom/bean/User.java | 29 ++++++++++++++++ .../config/WebSocketConfig.java | 6 ++-- .../controller/UserController.java | 1 - .../springChatRoom/service/ChatService.java | 21 ++++++++++++ .../src/main/resources/static/js/main.js | 5 +-- 7 files changed, 90 insertions(+), 7 deletions(-) create mode 100644 springChatRoom/src/main/java/com/yen/springChatRoom/bean/Channel.java create mode 100644 springChatRoom/src/main/java/com/yen/springChatRoom/bean/User.java diff --git a/springChatRoom/src/main/java/com/yen/springChatRoom/ChatRoomApplication.java b/springChatRoom/src/main/java/com/yen/springChatRoom/ChatRoomApplication.java index 3cc7d8fb7..5b9f667f7 100644 --- a/springChatRoom/src/main/java/com/yen/springChatRoom/ChatRoomApplication.java +++ b/springChatRoom/src/main/java/com/yen/springChatRoom/ChatRoomApplication.java @@ -2,7 +2,6 @@ import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.context.annotation.ComponentScan; // NOTE !!! DO NOT enable below, or will cause websocket connection error //@ComponentScan(basePackages = "com.yen.springChatRoom.redis.RedisListenerBean") // https://blog.csdn.net/automal/article/details/111859409 diff --git a/springChatRoom/src/main/java/com/yen/springChatRoom/bean/Channel.java b/springChatRoom/src/main/java/com/yen/springChatRoom/bean/Channel.java new file mode 100644 index 000000000..f773254a4 --- /dev/null +++ b/springChatRoom/src/main/java/com/yen/springChatRoom/bean/Channel.java @@ -0,0 +1,34 @@ +package com.yen.springChatRoom.bean; + +import java.util.List; + +public class Channel { + + private String channelId; + private List users; + + public Channel() { + } + + public Channel(String channelId, List users) { + this.channelId = channelId; + this.users = users; + } + + public String getChannelId() { + return channelId; + } + + public void setChannelId(String channelId) { + this.channelId = channelId; + } + + public List getUsers() { + return users; + } + + public void setUsers(List users) { + this.users = users; + } + +} diff --git a/springChatRoom/src/main/java/com/yen/springChatRoom/bean/User.java b/springChatRoom/src/main/java/com/yen/springChatRoom/bean/User.java new file mode 100644 index 000000000..87886d8e8 --- /dev/null +++ b/springChatRoom/src/main/java/com/yen/springChatRoom/bean/User.java @@ -0,0 +1,29 @@ +package com.yen.springChatRoom.bean; + +public class User { + + private String userName; + + public User() { + } + + public User(String userName) { + this.userName = userName; + } + + public String getUserName() { + return userName; + } + + public void setUserName(String userName) { + this.userName = userName; + } + + @Override + public String toString() { + return "User{" + + "userName='" + userName + '\'' + + '}'; + } + +} diff --git a/springChatRoom/src/main/java/com/yen/springChatRoom/config/WebSocketConfig.java b/springChatRoom/src/main/java/com/yen/springChatRoom/config/WebSocketConfig.java index a1b1b8ef0..654a35a02 100644 --- a/springChatRoom/src/main/java/com/yen/springChatRoom/config/WebSocketConfig.java +++ b/springChatRoom/src/main/java/com/yen/springChatRoom/config/WebSocketConfig.java @@ -23,12 +23,12 @@ public void registerStompEndpoints(StompEndpointRegistry registry) { registry.addEndpoint("ws").withSockJS(); // if browser not support websocket, use SockJS instead } - @Override public void configureMessageBroker(MessageBrokerRegistry registry) { /** * 配置訊息代理 + * * enableSimpleBroker: server端推送給client端的路徑prefix (server -> client) * setApplicationDestinationPrefixes: client端發送給server端的路徑prefix (client -> server) * @@ -36,8 +36,8 @@ public void configureMessageBroker(MessageBrokerRegistry registry) { */ //WebSocketMessageBrokerConfigurer.super.configureMessageBroker(registry); - registry.setApplicationDestinationPrefixes("/app"); - registry.enableSimpleBroker("/topic"); + registry.setApplicationDestinationPrefixes("/app"); // (client -> server) + registry.enableSimpleBroker("/topic"); // (server -> client) } } diff --git a/springChatRoom/src/main/java/com/yen/springChatRoom/controller/UserController.java b/springChatRoom/src/main/java/com/yen/springChatRoom/controller/UserController.java index 4a806e40c..491a59af7 100644 --- a/springChatRoom/src/main/java/com/yen/springChatRoom/controller/UserController.java +++ b/springChatRoom/src/main/java/com/yen/springChatRoom/controller/UserController.java @@ -1,6 +1,5 @@ package com.yen.springChatRoom.controller; -import com.yen.springChatRoom.bean.OnlineUser; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; diff --git a/springChatRoom/src/main/java/com/yen/springChatRoom/service/ChatService.java b/springChatRoom/src/main/java/com/yen/springChatRoom/service/ChatService.java index b692ed38d..d63d67d20 100644 --- a/springChatRoom/src/main/java/com/yen/springChatRoom/service/ChatService.java +++ b/springChatRoom/src/main/java/com/yen/springChatRoom/service/ChatService.java @@ -1,5 +1,7 @@ package com.yen.springChatRoom.service; +import com.yen.springChatRoom.bean.Channel; +import com.yen.springChatRoom.bean.User; import com.yen.springChatRoom.controller.ChatController; import com.yen.springChatRoom.bean.ChatMessage; import org.slf4j.Logger; @@ -9,11 +11,30 @@ import org.springframework.messaging.simp.SimpMessageSendingOperations; import org.springframework.stereotype.Service; +import java.util.ArrayList; +import java.util.List; + @Service public class ChatService { private static final Logger LOGGER = LoggerFactory.getLogger(ChatController.class); + private List channels = new ArrayList<>(); + + public List getAllChannels() { + + return channels; + } + + public Channel createChannel(String channelId, List users) { + + Channel channel = new Channel(channelId, users); + channels.add(channel); + return channel; + } + + // TODO : implement user - user send private msg ? + @Autowired private SimpMessageSendingOperations simpMessageSendingOperations; diff --git a/springChatRoom/src/main/resources/static/js/main.js b/springChatRoom/src/main/resources/static/js/main.js index f995f4201..f6f894373 100644 --- a/springChatRoom/src/main/resources/static/js/main.js +++ b/springChatRoom/src/main/resources/static/js/main.js @@ -1,8 +1,9 @@ 'use strict'; // Ref -// - https://www.callicoder.com/spring-boot-websocket-chat-example/ -// - https://blog.csdn.net/qqxx6661/article/details/98883166 +// https://www.callicoder.com/spring-boot-websocket-chat-example/ +// https://blog.csdn.net/qqxx6661/article/details/98883166 +// WebSocket common API : https://www.twblogs.net/a/5c03de16bd9eee728baac84b var usernamePage = document.querySelector('#username-page'); var chatPage = document.querySelector('#chat-page'); From a2014545e1e229414312f00daaec665cf1ff3e79 Mon Sep 17 00:00:00 2001 From: yennanliu Date: Mon, 13 Nov 2023 17:41:56 +0800 Subject: [PATCH 4/5] add private msg controller endpoint --- .../controller/ChatController.java | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/springChatRoom/src/main/java/com/yen/springChatRoom/controller/ChatController.java b/springChatRoom/src/main/java/com/yen/springChatRoom/controller/ChatController.java index 9f08febe6..b4076f8e9 100644 --- a/springChatRoom/src/main/java/com/yen/springChatRoom/controller/ChatController.java +++ b/springChatRoom/src/main/java/com/yen/springChatRoom/controller/ChatController.java @@ -1,12 +1,17 @@ package com.yen.springChatRoom.controller; +import com.yen.springChatRoom.bean.Channel; import com.yen.springChatRoom.bean.ChatMessage; +import com.yen.springChatRoom.bean.User; +import com.yen.springChatRoom.service.ChatService; import com.yen.springChatRoom.util.JsonUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.messaging.handler.annotation.DestinationVariable; import org.springframework.messaging.handler.annotation.MessageMapping; import org.springframework.messaging.handler.annotation.Payload; +import org.springframework.messaging.simp.SimpMessagingTemplate; import org.springframework.stereotype.Controller; import org.springframework.messaging.simp.SimpMessageHeaderAccessor; import org.slf4j.Logger; @@ -31,6 +36,12 @@ public class ChatController { private RedisTemplate redisTemplate; //private RedisTemplate redisTemplate; + @Autowired + private ChatService chatService; + + @Autowired + private SimpMessagingTemplate messagingTemplate; + private static final Logger LOGGER = LoggerFactory.getLogger(ChatController.class); /** @@ -72,4 +83,19 @@ public void addUser(@Payload ChatMessage chatMessage, SimpMessageHeaderAccessor } } + /** user - user private msg */ + @MessageMapping("/private/{channelId}") + private void handlePrivateMessage(@DestinationVariable String channelId, ChatMessage chatMessage){ + + Channel channel = new Channel(); + if (channel != null){ + for(User user : channel.getUsers()){ + // TODO : check if can use redisTemplate + // TODO : check what's channel for user-user + //messagingTemplate.convertAndSendToUser(user.getUserName(), "/topic/private/" + channelId, chatMessage); + redisTemplate.convertAndSend("/topic/private/" + channelId, chatMessage); + } + } + } + } From 967c184d603f570aa7704ebd65dd1c33ac0d3a54 Mon Sep 17 00:00:00 2001 From: yennanliu Date: Mon, 13 Nov 2023 17:55:47 +0800 Subject: [PATCH 5/5] update main.js --- springChatRoom/src/main/resources/static/js/main.js | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/springChatRoom/src/main/resources/static/js/main.js b/springChatRoom/src/main/resources/static/js/main.js index f6f894373..bd9b10c75 100644 --- a/springChatRoom/src/main/resources/static/js/main.js +++ b/springChatRoom/src/main/resources/static/js/main.js @@ -38,6 +38,7 @@ function connect(event) { function onConnected() { + // Subscribe to the Public Topic stompClient.subscribe('/topic/public', onMessageReceived); @@ -47,6 +48,11 @@ function onConnected() { JSON.stringify({sender: username, type: 'JOIN'}) ) + // Subscribe to private topic +// stompClient.subscribe('/user/topic/private/{channelId}', (message) => { +// // Handle incoming private messages +// }); + connectingElement.classList.add('hidden'); } @@ -143,6 +149,11 @@ function updateOnlineUsers(users) { }); } +// private msg (user - user) +//function sendMessage(channelId, message) { +// stompClient.send(`/app/private/${channelId}`, {}, JSON.stringify(message)); +//} + // Call the fetchUserList function to initially populate the user list fetchUserList();