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