QMQTT ===== mqtt client for Qt **Please compile the library with Qt >= 5.3 version. On Windows you need to specify `CONFIG += NO_UNIT_TESTS`, since gtest is not supported.** SSL is enabled by default, if the version of OpenSSL < 1.0.2, SSL may not be supported. Disable the SSL in CMakeLists.txt (cmake): option( ${PROJECT_NAME}_SSL "Enable SSL support for MQTT" OFF ) Disable the SSL with src/mqtt/qmqtt.pro (qmake): CONFIG+=QMQTT_NO_SSL To add websocket support, compile the library with Qt >= 5.7, and specify 'CONFIG += QMQTT_WEBSOCKETS'. This also works when compiling qmqtt for WebAssembly. Usage ===== In your QMake project, add: QT += qmqtt Connect using TCP: #include "qmqtt.h" QMQTT::Client *client = new QMQTT::Client(QHostAddress::LocalHost, 1883); client->setClientId("clientId"); client->setUsername("user"); client->setPassword("password"); client->connectToHost(); Connect using SSL: QSslConfiguration sslConfig = QSslConfiguration::defaultConfiguration(); // Add custom SSL options here (for example extra certificates) QMQTT::Client *client = new QMQTT::Client("example.com", 8883, sslConfig); client->setClientId("clientId"); client->setUsername("user"); client->setPassword("password"); // Optionally, set ssl errors you want to ignore. Be careful, because this may weaken security. // See QSslSocket::ignoreSslErrors(const QList &) for more information. client->ignoreSslErrors() client->connectToHost(); // Here's another option to suppress SSL errors (again, be careful) QObject::connect(client, &QMQTT::Client::sslErrors, [&](const QList &errors) { // Investigate the errors here, if you find no serious problems, call ignoreSslErrors() // to continue connecting. client->ignoreSslErrors(); }); Connect using WebSockets: QMQTT::Client *client = new QMQTT::Client("ws://www.example.com/mqtt", "", QWebSocketProtocol::VersionLatest); client->setClientId("clientId"); client->setUsername("user"); client->setPassword("password"); client->connectToHost(); Slots ===== void setHost(const QHostAddress& host); void setPort(const quint16 port); void setClientId(const QString& clientId); void setUsername(const QString& username); void setPassword(const QString& password); void setKeepAlive(const int keepAlive); void setCleanSession(const bool cleansess); void setAutoReconnect(const bool value); void setAutoReconnectInterval(const int autoReconnectInterval); void setWillTopic(const QString& willTopic); void setWillQos(const quint8 willQos); void setWillRetain(const bool willRetain); void setWillMessage(const QString& willMessage); void connectToHost(); void disconnectFromHost(); quint16 subscribe(const QString& topic, const quint8 qos); void unsubscribe(const QString& topic); quint16 publish(const Message& message); Signals ======= void connected(); void disconnected(); void error(const QMQTT::ClientError error); void subscribed(const QString& topic, const quint8 qos); void unsubscribed(const QString& topic); void published(const quint16 msgid, const quint8 qos); void pingresp(); void received(const QMQTT::Message& message); License ======= New BSD License Contributors ============= [@Kampfgnom](https://github.com/Kampfgnom) [@rafaeldelucena](https://github.com/rafaeldelucena) [@Vortex375](https://github.com/Vortex375) [@mwallnoefer](https://github.com/mwallnoefer) [@KonstantinRitt](https://github.com/KonstantinRitt) [@cncap](https://github.com/cncap) [@Psy-Kai](https://github.com/Psy-Kai) [@ejvr](https://github.com/ejvr) [@keytee](https://github.com/keytee) Authors ======= [@emqplus](https://github.com/emqplus) Feng Lee [@wguynes](https://github.com/wguynes) William Guynes [@wuming123057](https://github.com/wuming123057) Xuan