赞
踩
采用发布/订阅消息模式
使用TCP/IP提供网络连接
三种消息发布服务质量QoS,消息推送的原则,服务器维护难度递增
主题的分割符与通配符
根据推荐找到paho项目的mqtt的c库与cpp库,因为接口较为简单,且cpp库建立在c库上,所以直接使用c库paho.mqtt.c。
paho.mqtt.c 提供了两种模式——同步模式和异步模式。
单线程,线程不安全,接收需要循环遍历,特点是简单
MQTTClient_waitForCompletion()
MQTTClient_receive()
或者MQTTClient_yield()
以判断是否有数据通知MQTTClient_subscribeMany
支持以二位数组的方式批量订阅,其他Many也是一样的,异步同同步publish:https://www.eclipse.org/paho/files/mqttdoc/MQTTClient/html/pubsync.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。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)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。