liusuyi
2025-11-26 749f984045db91c38f9357a555a33a025c2f911e
ard-work/src/main/java/com/ard/work/component/websocket/handler/TyMessageHandler.java
@@ -47,8 +47,8 @@
            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());
            log.info("【cmd】Received【{}】message: {} size: {}", userId, payload,
                    WebSocketSessionManager.getOnlineUserCount());
            BaseMessage<?> baseMessage = JSON.parseObject(payload, BaseMessage.class);
            MessageType messageType = MessageType.fromString(baseMessage.getType());
            switch (messageType) {
@@ -89,7 +89,7 @@
     */
    private void handleHeartbeatMessage(String payload, Long userId) {
        WebSocketUtil.sendMessage(userId, "服务端收到:" + payload);
        WebSocketUtil.sendMessage(userId, payload);
    }
    /**
@@ -290,14 +290,7 @@
        Long userId = Long.parseLong(userIdStr);
        WebSocketSessionManager.removeSession(userId);
        log.info("【cmd】size: {}", WebSocketSessionManager.getOnlineUserCount());
        // 释放该用户所有 UAV 控制权
        uavControlService.releaseAllControls(userId);
        uavStreamManager.stopAllPullStreamByUser(userId);
        uavStateManager.removeSubscribe(userId);
        uavTelemetryManager.removeSubscribe(userId);
        uavSignalManager.removeSubscribe(userId);
        uavControlManager.removeSubscribe(userId);
        // 延迟10秒删除token(若期间没重连)
        CompletableFuture.runAsync(() -> {
@@ -309,6 +302,12 @@
            if (!WebSocketSessionManager.containsUser(userId)) {
                LoginUser loginUser = tokenService.getLoginUserByUserId(userId);
                if (loginUser != null) {
                    uavControlService.releaseAllControls(userId);
                    uavStreamManager.stopAllPullStreamByUser(userId);
                    uavStateManager.removeSubscribe(userId);
                    uavTelemetryManager.removeSubscribe(userId);
                    uavSignalManager.removeSubscribe(userId);
                    uavControlManager.removeSubscribe(userId);
                    tokenService.delLoginUser(loginUser.getToken(), userId);
                    log.info("【cmd】用户 [{}] 超时未重连,已删除 token", userId);
                }