package com.ld.igds.protocol.beibo.grainv1.server; import com.ld.io.api.HeartbeatProvider; import com.ld.io.api.IoSession; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; /** * 提供心跳信息 * * @author czt */ @Slf4j @Service public class BeiboGrainV1HeartbeatImpl implements HeartbeatProvider { @Override public byte[] provide(IoSession session) { //直接根据主机SESSIOn判断 IoSession session1 = BeiboGrainV1ServerUtils.getSession(); Long lastBeatTime = BeiboGrainV1ServerUtils.getHearBeat(session1); if (null == lastBeatTime) { return null; } //如果最后一次终端心跳时间距离当前时间大于 终端心跳时间的3次,则判断为离线 long deTime = System.currentTimeMillis() - lastBeatTime; if (deTime > (BeiboGrainV1ServerUtils.HEART_BEAT_TIME * 3 * 1000)) { log.info("-----------超过{}秒未获取到心跳信息,判定终端离线,踢出连接------------{}-{}", deTime, session.getAddress(), session.getPort()); session.destroy(); } return null; } }