From 2b919980a8c70554a64cb3d03cc95679af4d817f Mon Sep 17 00:00:00 2001
From: Your Name <you@example.com>
Date: 星期一, 03 七月 2023 00:22:16 +0800
Subject: [PATCH] Merge branch 'master' of http://git.homecommunity.cn/supervip/MicroCommunity

---
 service-api/src/main/java/com/java110/api/websocket/MessageWebsocket.java |   43 +++++++++++++++++++++++--------------------
 1 files changed, 23 insertions(+), 20 deletions(-)

diff --git a/service-api/src/main/java/com/java110/api/websocket/MessageWebsocket.java b/service-api/src/main/java/com/java110/api/websocket/MessageWebsocket.java
index 186124a..e660e0a 100644
--- a/service-api/src/main/java/com/java110/api/websocket/MessageWebsocket.java
+++ b/service-api/src/main/java/com/java110/api/websocket/MessageWebsocket.java
@@ -5,14 +5,10 @@
 import com.java110.utils.util.StringUtil;
 import com.java110.vo.ResultVo;
 import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import com.java110.core.log.LoggerFactory;
 import org.springframework.stereotype.Component;
 
-import javax.websocket.OnClose;
-import javax.websocket.OnError;
-import javax.websocket.OnMessage;
-import javax.websocket.OnOpen;
-import javax.websocket.Session;
+import javax.websocket.*;
 import javax.websocket.server.PathParam;
 import javax.websocket.server.ServerEndpoint;
 import java.io.IOException;
@@ -26,7 +22,7 @@
  * @Version 1.0
  * add by wuxw 2020/6/5
  **/
-@ServerEndpoint("/ws/message/{userId}")
+@ServerEndpoint("/ws/message/{userId}/{clientId}")
 @Component
 public class MessageWebsocket {
     private final static Logger logger = LoggerFactory.getLogger(MessageWebsocket.class);
@@ -54,14 +50,17 @@
      */
     private String userId = "";
 
+    private String clientId = "";
+
 
     /**
      * 杩炴帴寤虹珛鎴愬姛璋冪敤鐨勬柟娉�
      */
     @OnOpen
-    public void onOpen(Session session, @PathParam("userId") String userId) {
+    public void onOpen(Session session, @PathParam("userId") String userId, @PathParam("clientId") String clientId) {
         this.session = session;
         this.userId = userId;
+        this.clientId = clientId;
         if (webSocketMap.containsKey(userId)) {
             webSocketMap.remove(userId);
             webSocketMap.put(userId, this);
@@ -74,12 +73,12 @@
         }
 
 
-        logger.debug("鐢ㄦ埛杩炴帴:" + userId + ",褰撳墠鍦ㄧ嚎浜烘暟涓�:" + getOnlineCount());
+        logger.debug("鐢ㄦ埛杩炴帴:" + userId + ",瀹㈡埛绔細" + clientId + ",褰撳墠鍦ㄧ嚎浜烘暟涓�:" + getOnlineCount());
 
         try {
             sendMessage("杩炴帴鎴愬姛");
         } catch (IOException e) {
-            logger.error("鐢ㄦ埛:" + userId + ",缃戠粶寮傚父!!!!!!");
+            logger.error("鐢ㄦ埛:" + userId + ",瀹㈡埛绔細" + clientId + ",缃戠粶寮傚父!!!!!!");
         }
     }
 
@@ -93,7 +92,7 @@
             //浠巗et涓垹闄�
             subOnlineCount();
         }
-        logger.info("鐢ㄦ埛閫�鍑�:" + userId + ",褰撳墠鍦ㄧ嚎浜烘暟涓�:" + getOnlineCount());
+        logger.info("鐢ㄦ埛閫�鍑�:" + userId + ",瀹㈡埛绔細" + clientId + ",褰撳墠鍦ㄧ嚎浜烘暟涓�:" + getOnlineCount());
     }
 
     /**
@@ -103,7 +102,7 @@
      */
     @OnMessage
     public void onMessage(String message, Session session) throws IOException {
-        logger.info("鐢ㄦ埛娑堟伅:" + userId + ",鎶ユ枃:" + message);
+        logger.info("鐢ㄦ埛娑堟伅:" + userId + ",瀹㈡埛绔細" + clientId + ",鎶ユ枃:" + message);
         //鍙互缇ゅ彂娑堟伅
         //娑堟伅淇濆瓨鍒版暟鎹簱銆乺edis
         if (StringUtil.isEmpty(message)) {
@@ -120,9 +119,9 @@
 
         WsDataDto wsDataDto = JSONObject.parseObject(message, WsDataDto.class);
 
-        switch (wsDataDto.getCmd()){
+        switch (wsDataDto.getCmd()) {
             case WsDataDto.CMD_PING:
-                webSocketMap.get(userId).sendMessage(wsDataDto.toString());
+                //webSocketMap.get(userId).sendMessage(wsDataDto.toString());
                 break;
         }
 
@@ -148,15 +147,18 @@
      */
     @OnError
     public void onError(Session session, Throwable error) {
-        logger.error("鐢ㄦ埛閿欒:" + this.userId + ",鍘熷洜:" + error.getMessage());
-        error.printStackTrace();
+        logger.error("鐢ㄦ埛閿欒:" + this.userId + ",瀹㈡埛绔細" + clientId + ",鍘熷洜:" + error.getMessage());
+        // error.printStackTrace();
     }
 
     /**
      * 瀹炵幇鏈嶅姟鍣ㄤ富鍔ㄦ帹閫�
      */
     public void sendMessage(String message) throws IOException {
-        this.session.getBasicRemote().sendText(message);
+        //this.session.getBasicRemote().sendText(message);
+        synchronized (this.session) {
+            this.session.getBasicRemote().sendText(message);
+        }
     }
 
 
@@ -165,10 +167,11 @@
      */
     public static void sendInfo(String message, String userId) throws IOException {
         logger.info("鍙戦�佹秷鎭埌:" + userId + "锛屾姤鏂�:" + message);
-
+        if (!webSocketMap.containsKey(userId)) {
+            //瀹㈡埛绔湭杩炴帴
+            return;
+        }
         webSocketMap.get(userId).sendMessage(message);
-
-
     }
 
     public static synchronized int getOnlineCount() {

--
Gitblit v1.8.0