liusuyi
2025-09-06 bb508127e9454e8b39ac7d431765b6de0ac74c35
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);
        }
    }
@@ -115,7 +122,7 @@
            Boolean subscribe = uavStateMessage.getSubscribe();
            if (subscribe) {
                // 执行订阅操作
                uavStateManager.subscribe(boxSn, userId, 2);
                uavStateManager.subscribe(boxSn, userId, 1);
            } else {
                // 执行退订操作
                uavStateManager.unsubscribe(boxSn, userId);
@@ -146,7 +153,7 @@
            Boolean subscribe = uavTelemetryMessage.getSubscribe();
            if (subscribe) {
                // 执行订阅操作
                uavTelemetryManager.subscribe(boxSn, userId, 2);
                uavTelemetryManager.subscribe(boxSn, userId, 1);
            } else {
                // 执行退订操作
                uavTelemetryManager.unsubscribe(boxSn, userId);
@@ -215,6 +222,7 @@
            }
        }
    }
    private void handleAllMessage(String payload, Long userId) {
        // 解析接收到的JSON消息,将其转换为BaseMessage对象
        BaseMessage<UavControlMessage> controlMessage = JSON.parseObject(payload,
@@ -231,13 +239,14 @@
            Boolean subscribe = uavControlMessage.getSubscribe();
            if (subscribe) {
                // 执行订阅操作
                uavAllManager.subscribe(boxSn, userId, 2);
                uavAllManager.subscribe(boxSn, userId, 1);
            } else {
                // 执行退订操作
                uavAllManager.unsubscribe(boxSn, userId);
            }
        }
    }
    @Override
    public void afterConnectionEstablished(WebSocketSession session) {
        log.info("【cmd】Connected: {}", session.getId());