| package com.ld.igds.protocol.bhzn.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 Andy | 
|  */ | 
| @Slf4j | 
| @Service | 
| public class BhznGrainV1HeartbeatImpl implements HeartbeatProvider { | 
|   | 
|     @Override | 
|     public byte[] provide(IoSession session) { | 
|   | 
|   | 
|         //直接根据主机SESSIOn判断 | 
|         IoSession session1 = BhznGrainV1ServerUtils.getSession(); | 
|   | 
|         Long lastBeatTime = BhznGrainV1ServerUtils.getHearBeat(session1); | 
|   | 
|         if (null == lastBeatTime) { | 
|             return null; | 
|         } | 
|   | 
|         //如果最后一次终端心跳时间距离当前时间大于 终端心跳时间的3次,则判断为离线 | 
|         long deTime = System.currentTimeMillis() - lastBeatTime; | 
|   | 
|         if (deTime > (BhznGrainV1ServerUtils.HEART_BEAT_TIME * 3 * 1000)) { | 
|             log.info("-----------超过{}秒未获取到心跳信息,判定终端离线,踢出连接------------{}-{}", deTime, session.getAddress(), session.getPort()); | 
|   | 
|             session.destroy(); | 
|         } | 
|   | 
|         return null; | 
|     } | 
| } |