liusuyi
2025-03-22 fe63fd580c5b65fa398dfe1fdf44466b26c6aadd
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) {
        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);
        switch (baseMessage.getType()) {
            case "stream":
            MessageType messageType = MessageType.fromString(baseMessage.getType());
            switch (messageType) {
                case STREAM:
                handleStreamMessage(payload, userId);
                break;
            case "state":
                case STATE:
                handleStateMessage(payload, userId);
                break;
            case "telemetry":
                case TELEMETRY:
                handleTelemetryMessage(payload, userId);
                break;
            case "signal":
                case SIGNAL:
                handleSignalMessage(payload, userId);
                break;
            case "controller":
                case CONTROLLER:
                handleControlMessage(payload, userId);
                break;
            case "all":
                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());