| | |
| | | |
| | | |
| | | /** |
| | | * 定时向所有已连接的六合服务器发送心跳 |
| | | */ |
| | | @Scheduled(fixedRate = 5000) // 每5秒执行一次 |
| | | public void sendHeartBeat() { |
| | | long timestamp = System.currentTimeMillis(); |
| | | |
| | | for (TcpClientSession session : channels.values()) { |
| | | ChannelFuture future = session.getChannelFuture(); |
| | | if (future == null || !future.channel().isActive()) { |
| | | log.warn("边缘服务器 [{}] 连接未激活,跳过心跳发送", session.getServerId()); |
| | | continue; |
| | | } |
| | | |
| | | HeartbeatCmd heartbeat = new HeartbeatCmd(timestamp); |
| | | future.channel().writeAndFlush(heartbeat); |
| | | |
| | | log.info("→ 向边缘服务器 [{}] ({}:{}) 发送心跳,时间戳={}", |
| | | session.getServerId(), session.getHost(), session.getPort(), timestamp); |
| | | } |
| | | } |
| | | /** |
| | | * 发送消息 |
| | | */ |
| | | private void sendMessage(String key, BaseCmd msg) { |