All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.zhuang.mica.mqtt.server.interceptor.MyMqttMessageInterceptor Maven / Gradle / Ivy

The newest version!
package com.zhuang.mica.mqtt.server.interceptor;

import com.zhuang.mica.mqtt.model.PingReqMsg;
import com.zhuang.mica.mqtt.util.MqttCacheUtils;
import com.zhuang.mica.mqtt.util.cache.CacheUtils;
import lombok.extern.slf4j.Slf4j;
import net.dreamlu.iot.mqtt.codec.MqttMessage;
import net.dreamlu.iot.mqtt.codec.MqttMessageType;
import net.dreamlu.iot.mqtt.core.server.interceptor.IMqttMessageInterceptor;
import org.tio.core.ChannelContext;

import java.util.Date;

//@Service
@Slf4j
public class MyMqttMessageInterceptor implements IMqttMessageInterceptor {


    @Override
    public void onAfterHandled(ChannelContext context, MqttMessage message, long cost) throws Exception {
        String clientId = context.getBsId();
        if (message.fixedHeader().messageType().equals(MqttMessageType.CONNECT)) {
            log.debug("client connect! -> clientId={}", clientId);
        } else if (message.fixedHeader().messageType().equals(MqttMessageType.DISCONNECT)) {
            log.debug("client disconnect! -> clientId={}", clientId);
        } else if (message.fixedHeader().messageType().equals(MqttMessageType.PINGREQ)) {
            log.debug("client ping request! -> clientId={}", clientId);
            PingReqMsg pingReqMsg = new PingReqMsg();
            pingReqMsg.setDeviceId(clientId);
            pingReqMsg.setTimestamp(new Date());
            CacheUtils.setObject(MqttCacheUtils.getLastPingReqCacheKeyByDeviceId(clientId), pingReqMsg, 60 * 60);
        } else if (message.fixedHeader().messageType().equals(MqttMessageType.PINGRESP)) {
            log.debug("client ping response! -> clientId={}", clientId);
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy