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