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