[mosquitto]实现接收离线消息
2、订阅主题,在常规的命令之后,添加-c,来关闭cleanSeesion功能,也就是创建持久会话;添加-i clientId,附带上客户端id的信息,来作为唯一标识,之后将根据clientId重新连接会话并接收离线消息;添加-q 1or2,设置消息的QoS为1或者2。标识,若标识为true则代表会话已经存在,无需重新订阅主题,可以通过全局接收来获取离线消息。1、启动mosquitto服务时添加-v
·
一、mosquitto
1、启动mosquitto服务时添加-v,表示可以在broker中打印出监控日志。
mosquitto -c mosquitto.conf -v
2、订阅主题,在常规的命令之后,添加-c,来关闭cleanSeesion功能,也就是创建持久会话;添加-i clientId,附带上客户端id的信息,来作为唯一标识,之后将根据clientId重新连接会话并接收离线消息;添加-q 1or2,设置消息的QoS为1或者2。
mosquitto_sub -h brokerip -p 1883 -u username-P password -v -t topicname -c -i clientid -q 1
3、断开订阅。
4、发布消息,需添加-q 1or2。
mosquitto_pub -h serverip -p 1883 -u username -P password -t topicname -m <message> -q 1
5、重新订阅,此时即可看到离线消息。
二、mqtt3
设置connOpts.setCleanSession(flase),以及发布消息时Qos≥1。
三、mqtt5
在连接时配置cleanStart(false),创建持久会话,并设置会话存活时间sessionExpiry(SESSION_EXPIRATION),在连接后客户端会收到服务端的connAck报文,其中有个session present标识,若标识为true则代表会话已经存在,无需重新订阅主题,可以通过全局接收来获取离线消息。发布消息时QoS>=1。
更多推荐
所有评论(0)