From b8973cd2a300c1dddb5fd208a07c71ac1ca9b39d Mon Sep 17 00:00:00 2001
From: liusuyi <1951119284@qq.com>
Date: Thu, 15 Jan 2026 15:09:39 +0800
Subject: [PATCH] 优化
---
ard-work/src/main/java/com/ard/work/component/websocket/handler/TyMessageHandler.java | 12 ++++++------
ard-work/src/main/java/com/ard/work/service/impl/ArdDroneInfoServiceImpl.java | 14 +++++++-------
ard-work/src/main/java/com/ard/work/service/impl/ArdFlightTaskPartServiceImpl.java | 2 +-
3 files changed, 14 insertions(+), 14 deletions(-)
diff --git a/ard-work/src/main/java/com/ard/work/component/websocket/handler/TyMessageHandler.java b/ard-work/src/main/java/com/ard/work/component/websocket/handler/TyMessageHandler.java
index f55bb2a..f719a7f 100644
--- a/ard-work/src/main/java/com/ard/work/component/websocket/handler/TyMessageHandler.java
+++ b/ard-work/src/main/java/com/ard/work/component/websocket/handler/TyMessageHandler.java
@@ -345,14 +345,14 @@
return;
}
if (!WebSocketSessionManager.containsUser(userId)) {
+ uavControlService.releaseAllControls(userId);
+ uavStreamManager.stopAllPullStreamByUser(userId);
+ uavStateManager.removeSubscribe(userId);
+ uavTelemetryManager.removeSubscribe(userId);
+ uavSignalManager.removeSubscribe(userId);
+ uavControlManager.removeSubscribe(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);
}
diff --git a/ard-work/src/main/java/com/ard/work/service/impl/ArdDroneInfoServiceImpl.java b/ard-work/src/main/java/com/ard/work/service/impl/ArdDroneInfoServiceImpl.java
index 7064f3f..2b85811 100644
--- a/ard-work/src/main/java/com/ard/work/service/impl/ArdDroneInfoServiceImpl.java
+++ b/ard-work/src/main/java/com/ard/work/service/impl/ArdDroneInfoServiceImpl.java
@@ -340,15 +340,15 @@
ArdDroneInfo local = localMap.get(boxSn);
boolean dbOnline = local != null && local.getOnLine() == 1;
boolean needUpdate = (dbOnline != currentOnline);
-
+ // 只要远端设备在线,就刷新Redis缓存(无论状态是否变化),保证缓存一定存在
+ if (currentOnline) {
+ redisCache.setCacheObject(redisKey, remote);
+ } else {
+ // 远端离线,删除Redis缓存
+ redisCache.deleteObject(redisKey);
+ }
// 如果状态变化才更新
if (needUpdate){
- // 更新 Redis
- if (currentOnline) {
- redisCache.setCacheObject(redisKey, remote);
- } else {
- redisCache.deleteObject(redisKey);
- }
// 发布事件
eventPublisher.publishEvent(new DeviceStatusEvent(boxSn, currentOnline));
// 更新数据库
diff --git a/ard-work/src/main/java/com/ard/work/service/impl/ArdFlightTaskPartServiceImpl.java b/ard-work/src/main/java/com/ard/work/service/impl/ArdFlightTaskPartServiceImpl.java
index da66e03..dd0d4b1 100644
--- a/ard-work/src/main/java/com/ard/work/service/impl/ArdFlightTaskPartServiceImpl.java
+++ b/ard-work/src/main/java/com/ard/work/service/impl/ArdFlightTaskPartServiceImpl.java
@@ -60,7 +60,7 @@
// 2️⃣ 使用遥测自身时间戳判断是否还活着
long dataTs = telemetryData.getTimestamp(); // 设备时间 / 服务器接收时间
if (now - dataTs > 3000) {
- log.warn("超过 3 秒没有新遥测 → 认为已离线或冻结,不记录:{}", new Date(dataTs));
+ //log.warn("超过 3 秒没有新遥测 → 认为已离线或冻结,不记录:{}", new Date(dataTs));
return; // 超过 3 秒没有新遥测 → 认为已离线或冻结,不记录
}
--
Gitblit v1.9.3