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

news/2025/1/16 5:15:08/

这里写目录标题

  • Qos服务质量
  • 使用ESP8266接收QoS=1的MQTT消息
  • 保留消息(retainFlag)
  • 心跳机制
  • 遗嘱信息

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 – 遗嘱保留

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


http://www.ppmy.cn/news/277266.html

相关文章

MAYA活塞动画

给组打关键 让下面带动上面一起运动 创建定位器 放在中间 创建两个定位器 一个定位器放在连动秆下面,让定位跟物体一块动 创建目标约束 完成

Vue.js 中的 v-bind 和 v-on 简写

Vue.js 中的 v-bind 和 v-on 简写 在 Vue.js 中,v-bind 和 v-on 是两个常用的指令,用于绑定属性和事件。在本文中,我们将介绍 v-bind 和 v-on 的简写形式,以及如何使用它们。 v-bind 简写形式 在 Vue.js 中,v-bind 用…

IP-Guard上传软件到软件中心服务器时,软件ID、显示名称等信息如何获取?

如何实现客户端只能从软件中心下载安装软件? 控制台设置禁止全部软件安装的软件管理策略即可。即使设置禁止,软件中心安装不会受影响的。 在控制台-策略-软件安装管理策略,勾选禁止全部软件的安装。 软件中心客户端下载安装软件后,下载安装包是否会自动删除? 1、http方式…

点击键盘的return键收回键盘

需要实现 UITextFieldDelegate协议中的方法 - (BOOL)textFieldShouldReturn:(UITextField *)textField { [textField resignFirstResponder]; return true; }

python 的 return 详解

你好,我是悦创。 return 语句用于退出函数,向调用方返回一个表达式。执行到 return 语句时,会退出函数,return 之后的语句不再执行。如: def my_print(x):if x 1:return Falseprint(i am xiaotao)return Truea my_…

return的使用

1.在循环内 1.1单层循环 、return会跳出循环 1.2多层循环 一个return只会跳出自己所在的一层循环 2.在方法内或者说函数内 1.1普通函数 return 会返回函数 2.1多层函数 return 会返回当前函数,比如递归中,函数会循环调用自身,回调时返回上一…

return 的作用

就是一个函数执行完它内部所有流程结构之后会有一个计算结果,这个结果就是通过return带回到函数调用的位置。 如果函数返回类型是void 即空 无返回 return 可以省略 其他非void情况下都需要return返回一个结果。 C语言中有个小问题,如果你函数中忘写ret…

return返回值返回到哪里

c语言return,返回给了上一级,比如一个递归程序,从第三层返回到第二层;又比如一个普通的子程序,那就返回到主程序中去。 主程序中return返回给了操作系统。 main函数调用了sum函数,sum的return返回给了main…