From ce64e667815b39efdc2f8bd52be0d43d49db8d84 Mon Sep 17 00:00:00 2001
From: wuxw <928255095@qq.com>
Date: 星期日, 17 七月 2022 00:06:29 +0800
Subject: [PATCH] 优化小区位置

---
 service-api/src/main/java/com/java110/api/websocket/MessageWebsocket.java |   82 ++++++++++++++++++++++++++---------------
 1 files changed, 52 insertions(+), 30 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 b38f5f2..3db7852 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
@@ -1,9 +1,11 @@
 package com.java110.api.websocket;
 
 import com.alibaba.fastjson.JSONObject;
+import com.java110.dto.WsDataDto;
 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.*;
@@ -20,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);
@@ -48,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);
@@ -68,12 +73,12 @@
         }
 
 
-        logger.debug("鐢ㄦ埛杩炴帴:" + userId + ",褰撳墠鍦ㄧ嚎浜烘暟涓�:" + getOnlineCount());
+        logger.debug("鐢ㄦ埛杩炴帴:" + userId + ",瀹㈡埛绔細" + clientId + ",褰撳墠鍦ㄧ嚎浜烘暟涓�:" + getOnlineCount());
 
         try {
             sendMessage("杩炴帴鎴愬姛");
         } catch (IOException e) {
-            logger.error("鐢ㄦ埛:" + userId + ",缃戠粶寮傚父!!!!!!");
+            logger.error("鐢ㄦ埛:" + userId + ",瀹㈡埛绔細" + clientId + ",缃戠粶寮傚父!!!!!!");
         }
     }
 
@@ -87,7 +92,7 @@
             //浠巗et涓垹闄�
             subOnlineCount();
         }
-        logger.info("鐢ㄦ埛閫�鍑�:" + userId + ",褰撳墠鍦ㄧ嚎浜烘暟涓�:" + getOnlineCount());
+        logger.info("鐢ㄦ埛閫�鍑�:" + userId + ",瀹㈡埛绔細" + clientId + ",褰撳墠鍦ㄧ嚎浜烘暟涓�:" + getOnlineCount());
     }
 
     /**
@@ -96,28 +101,44 @@
      * @param message 瀹㈡埛绔彂閫佽繃鏉ョ殑娑堟伅
      */
     @OnMessage
-    public void onMessage(String message, Session session) {
-        logger.info("鐢ㄦ埛娑堟伅:" + userId + ",鎶ユ枃:" + message);
+    public void onMessage(String message, Session session) throws IOException {
+        logger.info("鐢ㄦ埛娑堟伅:" + userId + ",瀹㈡埛绔細" + clientId + ",鎶ユ枃:" + message);
         //鍙互缇ゅ彂娑堟伅
         //娑堟伅淇濆瓨鍒版暟鎹簱銆乺edis
-        if (!StringUtil.isEmpty(message)) {
-            try {
-                //瑙f瀽鍙戦�佺殑鎶ユ枃
-                JSONObject jsonObject = JSONObject.parseObject(message);
-                //杩藉姞鍙戦�佷汉(闃叉涓叉敼)
-                jsonObject.put("fromUserId", this.userId);
-                String toUserId = jsonObject.getString("toUserId");
-                //浼犻�佺粰瀵瑰簲toUserId鐢ㄦ埛鐨剋ebsocket
-                if (!StringUtil.isEmpty(toUserId) && webSocketMap.containsKey(toUserId)) {
-                    webSocketMap.get(toUserId).sendMessage(jsonObject.toJSONString());
-                } else {
-                    logger.error("璇锋眰鐨刢lientId:" + toUserId + "涓嶅湪璇ユ湇鍔″櫒涓�");
-                    //鍚﹀垯涓嶅湪杩欎釜鏈嶅姟鍣ㄤ笂锛屽彂閫佸埌mysql鎴栬�卹edis
-                }
-            } catch (Exception e) {
-                logger.error("鎺ユ敹瀹㈡埛绔秷鎭け璐�", e);
-            }
+        if (StringUtil.isEmpty(message)) {
+            ResultVo resultVo = new ResultVo(ResultVo.CODE_ERROR, "鏈寘鍚唴瀹�");
+            webSocketMap.get(userId).sendMessage(resultVo.toString());
+            return;
         }
+
+        if (!StringUtil.isJsonObject(message)) {
+            ResultVo resultVo = new ResultVo(ResultVo.CODE_ERROR, "涓嶆槸鏈夋晥鏁版嵁鏍煎紡");
+            webSocketMap.get(userId).sendMessage(resultVo.toString());
+            return;
+        }
+
+        WsDataDto wsDataDto = JSONObject.parseObject(message, WsDataDto.class);
+
+        switch (wsDataDto.getCmd()) {
+            case WsDataDto.CMD_PING:
+                //webSocketMap.get(userId).sendMessage(wsDataDto.toString());
+                break;
+        }
+
+//        //瑙f瀽鍙戦�佺殑鎶ユ枃
+//        JSONObject jsonObject = JSONObject.parseObject(message);
+//        //杩藉姞鍙戦�佷汉(闃叉涓叉敼)
+//        jsonObject.put("fromUserId", this.userId);
+//        String toUserId = jsonObject.getString("toUserId");
+//        //浼犻�佺粰瀵瑰簲toUserId鐢ㄦ埛鐨剋ebsocket
+//        if (!StringUtil.isEmpty(toUserId) && webSocketMap.containsKey(toUserId)) {
+//            webSocketMap.get(toUserId).sendMessage(jsonObject.toJSONString());
+//        } else {
+//            logger.error("璇锋眰鐨刢lientId:" + toUserId + "涓嶅湪璇ユ湇鍔″櫒涓�");
+//            //鍚﹀垯涓嶅湪杩欎釜鏈嶅姟鍣ㄤ笂锛屽彂閫佸埌mysql鎴栬�卹edis
+//        }
+
+
     }
 
     /**
@@ -126,8 +147,8 @@
      */
     @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();
     }
 
     /**
@@ -143,10 +164,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