Pārlūkot izejas kodu

update WsConnectionChat

reghao 1 gadu atpakaļ
vecāks
revīzija
50059b7eac

+ 19 - 3
message/message-service/src/main/java/cn/reghao/tnb/message/app/ws/WsConnectionChat.java

@@ -42,6 +42,7 @@ public class WsConnectionChat {
             loginEvent(userId, true);
             sessionMap.put(session.getId(), userId);
             userMap.put(userId, session);
+            log.info("{} 在线", userId);
         }
     }
 
@@ -52,6 +53,7 @@ public class WsConnectionChat {
             loginEvent(userId, false);
             sessionMap.remove(sessionId);
             userMap.remove(userId);
+            log.info("{} 离线", userId);
         }
     }
 
@@ -91,7 +93,22 @@ public class WsConnectionChat {
                 data.get("receiverId").getAsLong();
                 break;
             case event_talk:
-                log.info("talk event");
+                JsonObject data1 = jsonObject.get("data").getAsJsonObject();
+                long senderId = data1.get("senderId").getAsLong();
+                long receiverId = data1.get("receiverId").getAsLong();
+                String content = data1.get("content").getAsString();
+                log.info("send {} -> {}", receiverId, content);
+
+                WebSocketSession webSocketSession = userMap.get(receiverId);
+                if (webSocketSession != null) {
+                    Map<String, Object> map = new HashMap<>();
+                    map.put("senderId", senderId);
+                    map.put("receiverId", receiverId);
+                    map.put("payload", content);
+                    sendMessage(webSocketSession, map);
+                } else {
+                    log.error("not found {} session", receiverId);
+                }
                 break;
             case event_talk_revoke:
                 log.info("talk_revoke event");
@@ -111,10 +128,9 @@ public class WsConnectionChat {
         session.sendMessage(textMessage);
     }
 
-    public void sendMessage(long userId, Object payload) {
+    public void sendTextMessage(long userId, String text) {
         WebSocketSession session = userMap.get(userId);
         if (session != null) {
-            String text = (String) payload;
             TextMessage textMessage = new TextMessage(text);
             try {
                 session.sendMessage(textMessage);