package com.ld.igds.protocol.snap.server;
|
|
import com.ld.igds.protocol.snap.SnapUtils;
|
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 = SnapUtils.getHeartBeat(session.getAddress(), session.getPort());
|
|
if (null == lastTime) {
|
return null;
|
}
|
|
long cur = System.currentTimeMillis();
|
// 如果两次心跳,间隔大于规定3次心跳周期则判断为离线
|
if (cur - lastTime > SnapUtils.HEART_BEAT_TIME * 3 * 1000) {
|
|
SnapUtils.delHeartBeat(session.getAddress(), session.getPort());
|
log.info("---------抓拍插件心跳验证判断超时,连接被销毁--------KEY={}", session.getBusinessKey());
|
session.destroy();
|
}
|
|
return null;
|
}
|
|
}
|