package org.yzh.web.endpoint; import io.github.yezhihao.netmc.core.model.Message; import io.github.yezhihao.netmc.session.Session; import io.github.yezhihao.netmc.session.SessionListener; import org.springframework.stereotype.Component; import org.yzh.protocol.basics.JTMessage; import org.yzh.web.model.entity.DeviceDO; import org.yzh.web.model.enums.SessionKey; import java.util.function.BiConsumer; /** * @author yezhihao * https://gitee.com/yezhihao/jt808-server */ @Component public class JTSessionListener implements SessionListener { /** * 下行消息拦截器 */ private static final BiConsumer requestInterceptor = (session, message) -> { JTMessage request = (JTMessage) message; request.setClientId(session.getClientId()); request.setSerialNo(session.nextSerialNo()); if (request.getMessageId() == 0) { request.setMessageId(request.reflectMessageId()); } DeviceDO device = session.getAttribute(SessionKey.Device); if (device != null) { int protocolVersion = device.getProtocolVersion(); if (protocolVersion > 0) { request.setVersion(true); request.setProtocolVersion(protocolVersion); } } }; /** * 设备连接 */ @Override public void sessionCreated(Session session) { session.requestInterceptor(requestInterceptor); } /** * 设备注册 */ @Override public void sessionRegistered(Session session) { } /** * 设备离线 */ @Override public void sessionDestroyed(Session session) { } }