package com.ld.igds.protocol.quantity.shuhan.server; import com.ld.igds.protocol.quantity.shuhan.ShuHanUtils; import com.ld.io.api.HeartbeatProvider; import com.ld.io.api.IoSession; import lombok.extern.slf4j.Slf4j; /** * 心跳检测,当前服务器心跳维持为终端维持,当前只验证维持是否正常 */ @Slf4j public class HeartbeatProviderImpl implements HeartbeatProvider { @Override public byte[] provide(IoSession session) { log.debug("------------------蜀汉插件心跳验证判断----------------"); Long lastTime = ShuHanUtils.getHeartBeat(session.getAddress(), session.getPort()); if (null == lastTime) { return null; } long cur = System.currentTimeMillis(); // 如果两次心跳,间隔大于规定3次心跳周期则判断为离线 if (cur - lastTime > ShuHanUtils.HEART_BEAT_TIME * 3 * 1000) { ShuHanUtils.delHeartBeat(session.getAddress(), session.getPort()); log.info("---------蜀汉心跳验证判断超时,连接被销毁--------KEY={}", session.getBusinessKey()); session.destroy(); } return null; } }