在
利用netty-mqtt-client实现Mqtt消息的发布和订阅
中描述了如何实现消息的发布和订阅
但是消息有不同的格式,例如字符串和16进制hex,对于不同的格式,在发布和订阅式需要转换格式,然后进行处理,否则会出现乱码。
1.发布16进制消息
String msg = "5A00F201"; //16进制字符串
mqttClient.publish(topic,Unpooled.copiedBuffer(CronUtil.hexToByteArray(msg)), MqttQoS.AT_MOST_ONCE,false);
2.订阅16进制消息
@Override
public void onMessage(String topic, ByteBuf payload) {
String message = ByteBufUtil.hexDump(payload).toUpperCase();
log.info("消息主题:" + topic);
log.info("消息内容:" + message);
}
3.发布字符串消息
String msg = "hello";
mqttClient.publish(topic, Unpooled.copiedBuffer(msg.getBytes()), MqttQoS.AT_MOST_ONCE,false);
4.订阅字符串消息
@Override
public void onMessage(String topic, ByteBuf payload) {
String message = payload.toString(CharsetUtil.UTF_8);
log.info("消息主题:" + topic);
log.info("消息内容:" + message);
}
版权声明:本文为juligang320原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。