Qos服务质量、心跳机制、保留消息,遗嘱信息,用户密码认证

文章介绍了MQTT协议中的QoS服务质量,强调QoS=1在保证消息传递和节省网络资源之间的平衡。ESP8266接收QoS=1的MQTT消息需要特定设置,包括固定clientID和cleanSession设为False。保留消息功能使得新订阅者能获取主题最后的状态。心跳机制用于检测客户端连接状态,而遗嘱信息在客户端断线时向其他订阅者发送最后的消息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Qos服务质量

若想实现QoS>0,订阅端连接服务端时cleanSession需要设置为false,订阅端订阅主题时QoS>0,发布端发布消息时的QoS>0。
服务端会选择发布消息和订阅消息中较低的QoS来实现消息传输,这也被称作“服务降级”。
QoS = 0, 占用的网络资源最低,但是接收端可能会出现无法接收消息的情况,所以适用于传输重要性较低的信息。
QoS = 1, MQTT会确保接收端能够接收到消息,但是有可能出现接收端反复接收同一消息的情况。
QoS = 2, MQTT会确保接收端只接收到一次消息。但是QoS为2时消息传输最慢,另外消息传输需要多次确认,因此所占用的网络资源也是最多的。此类服务等级适用于重要消息传输。
由于QoS1和QoS2都能确保客户端接收到消息,但是QoS1所占用的资源较QoS2占用资源更小。因此建议使用QoS1来实现网络资源较为珍贵的环境下传输重要信息。

使用ESP8266接收QoS=1的MQTT消息

要使用QoS=1订阅MQTT消息,需要满足以下要求:
1 接收端要有确定的clientID
2 接收端连接服务器时 cleanSession=False
3 发送端发布消息时 QoS=1或QoS=2
4 接收端订阅消息时 QoS=1

保留消息(retainFlag)

测试数据的客户端向主题发布消息时如果将“保留消息”这选择变为true,那么当其它客户端刚订阅这个主题时都会收到测试数据的客户端最后一次上传的数据。

心跳机制

用来确认客户端和服务端是否还处于连接状态。

遗嘱信息

当发布遗嘱信息的客户端掉线后,订阅了该主题的客户端都会收到该遗嘱信息里的内容。
遗嘱信息实在与服务器连接的时候就要确认好的,即填一下三个信息:

lastWillTopic – 遗嘱主题

和普通主题一样。

lastWillQoS – 遗嘱QoS

与之前学的Qos相同。

lastWillRetain – 遗嘱保留

遗嘱消息也可以设置为保留消息,遗嘱保留用于设置遗嘱消息是否需要进行保留处理。服务端会根据此处内容,对遗嘱消息进行相应的保留与否处理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值