MqttClient接口说明
一、使用示例
连接MQTT服务器,订阅消息,推送消息
#include <iostream>
#include <unistd.h>
#include <string.h>
#include "mqtt_client/mqtt_client.h"
#define MQTT_URL "tcp://mqtt.eclipse.org:1883"
#define CLIENT_ID "ExampleClientHost"
#define USER_NAME "user"
#define PASSWORD "password"
#define TOPIC_PUSH_INFO "topic_push_info"
#define TOPIC_SUB_INFO "topic_sub_info"
// 收到消息回调函数(参数,主题,数据段,长度)
void CallbackRecvPdData(void *arg, const char* topic, const void* data, const int len)
{
printf("[%s] [%d] [%s] Receive PD message, topic:%s\n",
__FILE__, __LINE__, __FUNCTION__, topic);
// 判定主题是否为PD消息
if(strcmp(topic, TOPIC_SUB_INFO) != 0) {
return;
}
for(int i = 0; i < len; i++) {
printf("%02x ", ((uint8_t*)data)[i]);
}
printf("\r\n");
}
void MqttClientTest()
{
// 创建MQTT客户端
MqttClient *pmqtt =
new MqttClient(MQTT_URL, CLIENT_ID, USER_NAME, PASSWORD);
// 设置接收PD消息回调函数
pmqtt->SetCallbackRecvMsgarrvd(CallbackRecvPdData, NULL);
pmqtt->Subscribe(TOPIC_SUB_INFO, 0);
// 循环推送消息
while(1) {
// 推送消息
uint8_t buff[] = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07 };
pmqtt->Publish(TOPIC_PUSH_INFO, buff, sizeof(buff), 0);
sleep(10);
}
delete pmqtt;
}
int main()
{
MqttClientTest();
return 0;
}
二、MqttClient类
1. 构造函数
/**
* @brief 构造函数
*
* @param server_url MQTT服务器URL,例"tcp://123.456.789.123:1883";
* @param client_id 客户端ID;
* @param user_name 用户名;
* @param password 密码;
*/
MqttClient(const char* server_url, const char* client_id,
const char* user_name, const char* password);
- 参数
- server_url MQTT服务器URL,例"tcp://123.456.789.123:1883";
- client_id 客户端ID;
- user_name 用户名;
- password 密码;
- 返回值
2. 析构函数
3. 自动重连时间间隔设置
- 参数
- ms 重连时间间隔(ms)
- 返回值
- 空
4. 推送函数
/**
* @brief 推送函数
*
* @param topic 推送的主题
* @param buf 数据buf
* @param len 数据长度
* @param qos 推送消息的服务质量
*
* @return 成功返回MQTTCLIENT_SUCCESS;异常则返回错误代码。
*/
int Publish(const char* topic, const void* buf, int len, int qos = 0);
- 参数
- topic 推送的主题
- buf 数据buf
- len 数据长度
- qos 推送消息的服务质量
- 返回值
- 成功返回MQTTCLIENT_SUCCESS;异常则返回错误代码。
5. 订阅函数
/**
* @brief 订阅函数
*
* @param topic 订阅主题,可能包含通配符
* @param qos 订阅所请求的服务质量
*
* @return 添加订阅成功返回1;失败返回-1
*/
int Subscribe(const char* topic, int qos = 0);
- 参数
- topic 订阅主题,可能包含通配符
- qos 订阅所请求的服务质量
- 返回值
- 空
6. 取消订阅函数
/**
* @brief 取消订阅函数
*
* @param topic 取消订阅的主题
*
* @return 取消订阅成功返回1;失败返回-1
*/
int Unsubscribe(const char* topic);
- 参数
- topic 取消订阅的主题
- 返回值
- 取消订阅成功返回1;失败返回-1
7. 设置订阅接收数据回调函数
/**
* @brief 设置收到消息的回调函数
*
* @param fp_callback 回调函数
* @param arg 回调函数的参数
*
* @return 无
*/
void SetCallbackRecvMsgarrvd(fpCallbackRecvMsgarrvd fp_callback, void* arg = nullptr);
// 收到消息的回调
typedef void (*fpCallbackRecvMsgarrvd)(void *arg,
const char* topic, const void* msg, int msglen);
- 参数
- callback 回调函数指针
- arg 回调函数参数
- 返回值
- 空
8. 获取当前MQTT连接状态
- 参数
- 无
- 返回值
- 1已连接;0未连接