package com.ld.igds.protocol.zldz.server;
|
|
import com.ld.igds.common.CoreSerService;
|
import com.ld.igds.models.DeviceSer;
|
import com.ld.igds.util.SpringUtil;
|
import com.ld.io.api.HeartbeatProvider;
|
import com.ld.io.api.IoSession;
|
import lombok.extern.slf4j.Slf4j;
|
import org.apache.commons.lang3.StringUtils;
|
|
|
/**
|
* 心跳维持,验证当前连接中的IP在服务器上配置的有没有,如果有则表示正常连接,如果没有则踢除连接。
|
* <p>
|
* 如果有正常心跳,则发送正常心跳命令,如果没有则发送设备状态查询,
|
*/
|
@Slf4j
|
public class HeartbeatProviderImpl implements HeartbeatProvider {
|
|
private CoreSerService serService;
|
|
@Override
|
public byte[] provide(IoSession session) {
|
|
log.debug("========系统开始执行心跳=========={}---{}", session.getCompanyId(), session.getBusinessKey());
|
|
if (null == serService) {
|
serService = SpringUtil.getBean(CoreSerService.class);
|
}
|
|
DeviceSer ser = null;
|
String companyId = session.getCompanyId();
|
if (StringUtils.isNotEmpty(companyId)) {
|
ser = serService.getCacheSerByIp(companyId, session.getAddress(), session.getPort());
|
}
|
|
if (null == ser) {
|
log.error("========心跳执行没有获取到分机信息======IP={}-{},取消踢出,只做日志提醒。", session.getAddress(), session.getPort());
|
session.destroy();
|
return null;
|
}
|
return null;
|
}
|
|
}
|