123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- #ifndef MQTTBase_H
- #define MQTTBase_H
- #include <QObject>
- #include <QMap>
- #include "qmqtt.h"
- /**
- * 使用说明:
- * 1. 子类可以继承这个类,重新实现 recvMessage 函数,这个函数是接收到消息的回调函数
- * 2. 使用SPDLOG日志库,需要注册一个名为“MQTT”的logger
- */
- class MQTTBase : public QObject
- {
- Q_OBJECT
- public:
- MQTTBase(QObject* parent = nullptr);
- /* 设置地址 */
- void setIPAndPort(const QString& IP, int port = 1883);
- /* 设置订阅 */
- void addSubcribe(const QString& topic,int qos = 0);
- /* 设置自动重连 */
- void setAutoReconnect(bool isAuto = true);
- /* 连接到服务器 */
- void connectToServer();
- /* 发送消息 */
- void sendMessage(const QString& topic, const QByteArray& message, int qos = 0);
-
- signals:
- /* 接收到消息,对消息进行了转发 */
- void signal_recvMessage(const QString& message);
- protected:
- /* 接收到消息,子类继承这个解析消息数据 */
- virtual void recvMessage(const QMQTT::Message& message) = 0;
- protected slots:
- void do_connected(); /* 连接成功 */
- void do_disconnect(); /* 断开连接 */
- void do_error(const QMQTT::ClientError error); /* 错误 */
- void do_subscribed(const QString& topic, const quint8 qos); /* 订阅成功 */
- void do_received(const QMQTT::Message& message);/* 接收到消息,子类继承这个解析消息数据 */
- protected:
- // std::shared_ptr<spdlog::logger> m_logger = nullptr;
- bool m_isConnected = false; /* 是否连接成功 */
- QString m_mqttIP; /* MQTT服务器IP */
- int m_mqttPort; /* MQTT服务器端口 */
- QMap<QString, int> m_mapTopic; /* 订阅的主题和QOS */
- QMQTT::Client m_client; /* MQTT客户端 */
- };
- #endif /* MQTTBase_H */
|