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;
|
}
|
}
|