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在服务器上配置的有没有,如果有则表示正常连接,如果没有则踢除连接。 *
* 如果有正常心跳,则发送正常心跳命令,如果没有则发送设备状态查询, */ @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; } }