package com.fastbee.mqtt.handler; import com.fastbee.mqtt.annotation.Process; import com.fastbee.mqtt.handler.adapter.MqttHandler; import com.fastbee.mqtt.manager.ClientManager; import com.fastbee.mqtt.manager.ResponseManager; import com.fastbee.base.util.AttributeUtils; import com.fastbee.mqtt.utils.MqttMessageUtils; import io.netty.channel.ChannelHandlerContext; import io.netty.handler.codec.mqtt.*; import lombok.extern.slf4j.Slf4j; /** * 客户端Ping消息应答 * * @author bill */ @Slf4j @Process(type = MqttMessageType.PINGREQ) public class MqttPingreq implements MqttHandler { @Override public void handler(ChannelHandlerContext ctx, MqttMessage message) { /*获取客户端id*/ String clientId = AttributeUtils.getClientId(ctx.channel()); try { // log.debug("=>客户端:{},心跳信息", clientId); /*更新客户端ping时间*/ ClientManager.updatePing(clientId); /*响应设备的ping消息*/ MqttMessage pingResp = MqttMessageUtils.buildPingResp(); ResponseManager.sendMessage(pingResp, clientId, true); } catch (Exception e) { log.error("=>客户端:{},ping异常:{}", clientId, e); } } }