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