From fe63fd580c5b65fa398dfe1fdf44466b26c6aadd Mon Sep 17 00:00:00 2001
From: liusuyi <1951119284@qq.com>
Date: Sat, 22 Mar 2025 13:38:30 +0800
Subject: [PATCH] 优化

---
 ard-work/src/main/java/com/ard/tianyu/component/websocket/handler/TyMessageHandler.java |   61 +++++++++++++++++-------------
 1 files changed, 35 insertions(+), 26 deletions(-)

diff --git a/ard-work/src/main/java/com/ard/tianyu/component/websocket/handler/TyMessageHandler.java b/ard-work/src/main/java/com/ard/tianyu/component/websocket/handler/TyMessageHandler.java
index f5094b0..bfb4cfa 100644
--- a/ard-work/src/main/java/com/ard/tianyu/component/websocket/handler/TyMessageHandler.java
+++ b/ard-work/src/main/java/com/ard/tianyu/component/websocket/handler/TyMessageHandler.java
@@ -3,6 +3,7 @@
 import com.alibaba.fastjson2.JSON;
 import com.alibaba.fastjson2.TypeReference;
 import com.ard.tianyu.component.websocket.WebSocketSessionManager;
+import com.ard.tianyu.domain.enums.MessageType;
 import com.ard.tianyu.domain.message.*;
 import com.ard.tianyu.service.control.UavControlService;
 import com.ard.tianyu.component.websocket.utils.WebSocketUtil;
@@ -12,6 +13,7 @@
 import org.springframework.web.socket.TextMessage;
 import org.springframework.web.socket.WebSocketSession;
 import org.springframework.web.socket.handler.TextWebSocketHandler;
+
 import javax.annotation.Resource;
 
 
@@ -33,34 +35,39 @@
     private UavControlManager uavControlManager;
     @Resource
     private UavAllManager uavAllManager;
+
     @Override
     public void handleTextMessage(WebSocketSession session, TextMessage message) {
-        String userIdStr = (String) session.getAttributes().get("userId");
-        Long userId = Long.parseLong(userIdStr);
-        String payload = message.getPayload();
-        log.info("【cmd】Received message: {}", payload);
-        log.info("【cmd】size: {}", WebSocketSessionManager.getOnlineUserCount());
-
-        BaseMessage<?> baseMessage = JSON.parseObject(payload, BaseMessage.class);
-        switch (baseMessage.getType()) {
-            case "stream":
-                handleStreamMessage(payload, userId);
-                break;
-            case "state":
-                handleStateMessage(payload, userId);
-                break;
-            case "telemetry":
-                handleTelemetryMessage(payload, userId);
-                break;
-            case "signal":
-                handleSignalMessage(payload, userId);
-                break;
-            case "controller":
-                handleControlMessage(payload, userId);
-                break;
-            case "all":
-                handleAllMessage(payload, userId);
-                break;
+        try {
+            String userIdStr = (String) session.getAttributes().get("userId");
+            Long userId = Long.parseLong(userIdStr);
+            String payload = message.getPayload();
+            log.info("【cmd】Received message: {}", payload);
+            log.info("【cmd】size: {}", WebSocketSessionManager.getOnlineUserCount());
+            BaseMessage<?> baseMessage = JSON.parseObject(payload, BaseMessage.class);
+            MessageType messageType = MessageType.fromString(baseMessage.getType());
+            switch (messageType) {
+                case STREAM:
+                    handleStreamMessage(payload, userId);
+                    break;
+                case STATE:
+                    handleStateMessage(payload, userId);
+                    break;
+                case TELEMETRY:
+                    handleTelemetryMessage(payload, userId);
+                    break;
+                case SIGNAL:
+                    handleSignalMessage(payload, userId);
+                    break;
+                case CONTROLLER:
+                    handleControlMessage(payload, userId);
+                    break;
+                case ALL:
+                    handleAllMessage(payload, userId);
+                    break;
+            }
+        } catch (Exception e) {
+            log.error("Error handling message: {}", message, e);
         }
     }
 
@@ -215,6 +222,7 @@
             }
         }
     }
+
     private void handleAllMessage(String payload, Long userId) {
         // 解析接收到的JSON消息,将其转换为BaseMessage对象
         BaseMessage<UavControlMessage> controlMessage = JSON.parseObject(payload,
@@ -238,6 +246,7 @@
             }
         }
     }
+
     @Override
     public void afterConnectionEstablished(WebSocketSession session) {
         log.info("【cmd】Connected: {}", session.getId());

--
Gitblit v1.9.3