admin 管理员组文章数量: 893893
MQTT与paho.mqtt
MQTT协议
-
采用发布/订阅消息模式
-
使用TCP/IP提供网络连接
-
三种消息发布服务质量QoS,消息推送的原则,服务器维护难度递增
- 至多一次
- 至少一次
- 只有一次
-
主题的分割符与通配符
- 分割符"/":为方便主题管理与扩展,mqtt的主题是有路径的,以"/"分割
- 通配符"#":表示层次结构的完整子树,比如SENSOR/#,因此"#"只能为最后一个字符
- 通配符"+":标识层次结构的单个级别,用于分隔符之间,比如SENSOR/+/TEMP
库(paho.mqtt.c)
根据推荐找到paho项目的mqtt的c库与cpp库,因为接口较为简单,且cpp库建立在c库上,所以直接使用c库paho.mqtt.c。
paho.mqtt.c 提供了两种模式——同步模式和异步模式。
同步模式
单线程,线程不安全,接收需要循环遍历,特点是简单
特性接口
- 服务质量为"至少一次"和"恰好一次",publish时由于可能涉及重发必须调用
MQTTClient_waitForCompletion()
- 接收通知,需要循环调用
MQTTClient_receive()
或者MQTTClient_yield()
以判断是否有数据通知 MQTTClient_subscribeMany
支持以二位数组的方式批量订阅,其他Many也是一样的,异步同- 函数以及结构体以5结尾的表示是MQTT V5的接口与数据类型,异步同
例程
同步publish:.html
异步模式
多线程,线程安全,所有消息都以回调形式返回,特点非阻塞,适用于界面编程,且功能齐全
自动重连设置
-
开启条件:
MQTTAsync_connectOptions::automaticReconnect
设置为非零, -
重连时间间隔:从最小重连时间间隔(默认为1s)开始,每失败一次,时间翻倍,直到重连时间大于最大重连时间间隔(默认为60s),可以通过
MQTTAsync_connectOptions::minRetryInterval
,MQTTAsync_connectOptions::maxRetryInterval
进行设置。 -
重连成功会回调
MQTTAsync_connected
持久性发布设置
解释:publish不成功,一直发布,直到断开连接
- 开启条件:使用
MQTTAsync_createWithOptions
而不是MQTTAsync_create
来创建客户端对象。将MQTTAsync_createOptions::sendWhileDisconnected
设置为非零,并设置MQTTAsync_createOptions::maxBufferedMessages
(默认值100)。 - 可以调用
MQTTAsync_getPendingTokens
来返回等待发送的消息的id,或者返回发送过程尚未完成的消息的id。
例程
- 异步publish:.html
- 异步subscribe:.html
SSL支持
- 开关:
struct MQTTClient_init_options::do_openssl_init
- 配置:
struct MQTTClient_connectOptions::ssl
日志设置
-
日志文件输出开关(MQTT_C_CLIENT_TRACE):存储的文件名,ON/stdout输出到标准输出
-
日志级别设置(MQTT_C_CLIENT_TRACE): 7个级别,FATAL 、SEVERE、ERROR, PROTOCOL, MINIMUM, MEDIUM,MAXIMUM
-
例子:
MQTT_C_CLIENT_TRACE=ON MQTT_C_CLIENT_TRACE_LEVEL=PROTOCOL
-
接口
//同步模式 typedef void MQTTClient_traceCallback(enum MQTTCLIENT_TRACE_LEVELS level, char *message) void MQTTClient_setTraceLevel (enum MQTTCLIENT_TRACE_LEVELS level); void MQTTClient_setTraceCallback (MQTTClient_traceCallback *callback); //异步模式 typedef void MQTTAsync_traceCallback(enum MQTTASYNC_TRACE_LEVELS level, char *message) void MQTTAsync_setTraceLevel (enum MQTTASYNC_TRACE_LEVELS level) void MQTTAsync_setTraceCallback (MQTTAsync_traceCallback *callback)
资料
- 源码:.mqtt.c
- 文档:.html
- 主页:.php?page=clients/c/index.php
本文标签: MQTT与pahomqtt
版权声明:本文标题:MQTT与paho.mqtt 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1688192226h190252.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论