From a72638bb245e26033d2e537a2db0bb3475c05ff7 Mon Sep 17 00:00:00 2001
From: liusuyi <1951119284@qq.com>
Date: Fri, 17 Oct 2025 13:44:09 +0800
Subject: [PATCH] 优化只在边缘服务器在线时同步盒子
---
ard-work/src/main/java/com/ard/work/component/netty/TyTcpClientManager.java | 23 ++++++++++++++++-------
1 files changed, 16 insertions(+), 7 deletions(-)
diff --git a/ard-work/src/main/java/com/ard/work/component/netty/TyTcpClientManager.java b/ard-work/src/main/java/com/ard/work/component/netty/TyTcpClientManager.java
index 7fbf709..a52c955 100644
--- a/ard-work/src/main/java/com/ard/work/component/netty/TyTcpClientManager.java
+++ b/ard-work/src/main/java/com/ard/work/component/netty/TyTcpClientManager.java
@@ -7,7 +7,7 @@
import com.ard.work.component.netty.handler.MessageProtocolEncoder;
import com.ard.work.domain.cache.TyTcpServerCache;
import com.ard.work.domain.entity.ArdServerInfo;
-import com.ard.work.service.IArdServerService;
+import com.ard.work.service.IArdServerInfoService;
import io.netty.bootstrap.Bootstrap;
import io.netty.channel.*;
import io.netty.channel.nio.NioEventLoopGroup;
@@ -36,7 +36,7 @@
private final EventLoopGroup eventLoopGroup = new NioEventLoopGroup();
@Resource
- private IArdServerService ardServerService; // ← 从数据库读取边缘服务器配置
+ private IArdServerInfoService ardServerService; // ← 从数据库读取边缘服务器配置
@Resource
private ClientHandler clientHandler;
@@ -63,7 +63,9 @@
return bootstrap;
}
- /** 新增或重连服务器 */
+ /**
+ * 新增或重连服务器
+ */
public void connectServer(ArdServerInfo serverInfo) {
String serverId = serverInfo.getId();
String host = serverInfo.getHost();
@@ -79,9 +81,13 @@
Channel channel = f.channel();
channel.attr(AttributeKey.valueOf("serverId")).set(serverId);
TyTcpServerCache.putTcpServerCache(serverId, true);
+ // 断开服务器,修改状态为: 0 - 在线
+ ardServerService.updateServerStatus(serverId, "1");
} else {
log.warn("❌ 服务器 [{}] 连接失败", serverId);
TyTcpServerCache.putTcpServerCache(serverId, false);
+ // 断开服务器,修改状态为: 0 - 离线
+ ardServerService.updateServerStatus(serverId, "0");
}
});
@@ -97,12 +103,16 @@
channels.put(serverId, session);
}
- /** 断开服务器连接 */
+ /**
+ * 断开服务器连接
+ */
public void disconnectServer(String serverId) {
TcpClientSession session = channels.remove(serverId);
if (session != null && session.getChannelFuture() != null) {
session.getChannelFuture().channel().close();
log.info("断开服务器 [{}] 连接", serverId);
+ // 断开服务器,修改状态为: 0 - 离线
+ ardServerService.updateServerStatus(serverId, "0");
}
TyTcpServerCache.removeTcpServerCache(serverId);
}
@@ -140,7 +150,7 @@
@PostConstruct
public void initConnectServers() {
try {
- var serverList = ardServerService.selectArdServerManagementList(new ArdServerInfo()); // ← 从数据库查询所有服务器配置
+ var serverList = ardServerService.selectArdServerInfoList(new ArdServerInfo()); // ← 从数据库查询所有服务器配置
if (serverList == null || serverList.isEmpty()) {
log.warn("未在数据库中找到边缘服务器配置,跳过连接初始化");
return;
@@ -160,7 +170,7 @@
public void reconnectFailedServers() {
TyTcpServerCache.getTcpServerCacheMap().forEach((key, state) -> {
if (Boolean.FALSE.equals(state)) { // 连接失败的服务器
- ArdServerInfo serverInfo = ardServerService.selectArdServerManagementById(key);
+ ArdServerInfo serverInfo = ardServerService.selectArdServerInfoById(key);
if (serverInfo != null) {
connectServer(serverInfo);
}
@@ -188,5 +198,4 @@
session.getServerId(), session.getHost(), session.getPort(), timestamp);
});
}
-
}
--
Gitblit v1.9.3