liusuyi
2025-11-29 a838f3ca9a44d4aaf810ab2271ca33ebc4819e7e
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) {
@@ -290,25 +290,24 @@
        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(() -> {
            try {
                Thread.sleep(10_000); // 延迟10秒
                Thread.sleep(3_000); // 延迟3秒
            } catch (InterruptedException ignored) {
            }
            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);
                }