Einfacher MQTT-Client

Erstellung einer minimalistischen Telemetrie-Anwendung.

Simple MQTT Client zeigt, wie man eine minimalistische Client-Anwendung erstellt.

Um die Anwendung zu verwenden, geben Sie zunächst einen Host, einen Port, Secure on/off, WebSockets on/off und das Protokoll an. Dann klicken Sie auf Verbinden. Danach können Sie ein Thema abonnieren und eine Nachricht senden, die Sie auch erhalten. Sie können die Anwendung auch zweimal ausführen. Veröffentlichen Sie in der einen und abonnieren Sie in der anderen, und die Nachrichten werden übertragen.

simpleclient Optionen

  • Host - Sie können test.mosquitto.org oder broker.hivemq.com verwenden.
  • Port - der Port, zu dem die Verbindung aufgebaut werden soll, hängt von der Auswahl der WebSockets und der Auswahl von Secure ab
  • WebSockets - Sie können angeben: ausgewählt (aktiviert) oder nicht ausgewählt (deaktiviert)
  • Secure - Sie können angeben: ausgewählt (aktiviert) oder nicht ausgewählt (deaktiviert)
  • Protokoll - Sie können Folgendes angeben
    • mqtt 3.1
    • mqtt 3.1.1
    • mqtt 5.0
  • Thema - Ein Thema, das veröffentlicht oder abonniert werden soll
  • Nachricht - Eine Nachricht, die beim Veröffentlichen über das Thema gesendet wird

Verbindungseinstellungen

Dies sind die üblichen Kombinationen, die mit test.mosquitto.org funktionieren. Für broker.hivemq.com prüfen Sie die Informationen in den Links. Beachten Sie, dass es bei aktivierter Sicherheitsfunktion erforderlich sein kann, Zertifikate auf dem Computer zu installieren. Es kann auch notwendig sein, das Zertifikat zum mqtt-Client im Code hinzuzufügen.

  • Port 1883, Secure=deaktiviert, WebSockets=deaktiviert - mqtt über tcp
  • Port 8883, Secure=aktiviert, WebSockets=deaktiviert - mqtt über ssl
  • Port 8080, Sicher=deaktiviert, WebSockets=aktiviert - mqtt über Websockets
  • Port 8081, Secure=aktiviert, WebSockets=aktiviert - mqtt über sichere Websockets

Weitere Informationen zu den Brokern finden Sie unter:

Hinweis: Die Portnummern 1883 und 8080 sind nicht verschlüsselt und eignen sich daher nur für Entwicklungs- und Testzwecke. In der Produktion sollten Sie immer verschlüsselte Verbindungen verwenden.

Hinweis: WebAssembly unterstützt nur aktivierte WebSockets.

Erstellen eines Clients

Zunächst verwenden wir die Klasse QMqttClient, um einen MQTT-Client zu erstellen. Die Klasse bietet Eigenschaften zum Festlegen einer eindeutigen Client-ID sowie des Hostnamens und des Ports des Brokers, mit dem eine Verbindung hergestellt werden soll:

    m_client = new QMqttClient(this);
    m_client->setHostname(ui->lineEditHost->text());
    m_client->setPort(static_cast<quint16>(ui->spinBoxPort->value()));

Wir legen die Client-ID nicht fest, daher wird sie automatisch für uns generiert.

Als nächstes stellen wir eine Verbindung zu QMqttClient::messageReceived() her, um alle an den Broker gesendeten Nachrichten zu empfangen:

    connect(m_client, &QMqttClient::messageReceived, this, [this](const QByteArray &message, const QMqttTopicName &topic) {
        const QString content = QDateTime::currentDateTime().toString()
                    + " Received Topic: "_L1
                    + topic.name()
                    + " Message: "_L1
                    + message
                    + u'\n';
        ui->editLog->insertPlainText(content);
    });

Wenn Benutzer Themen im Client abonnieren, rufen wir QMqttClient::subscribe() für das angegebene Thema auf:

void MainWindow::on_buttonSubscribe_clicked()
{
    auto subscription = m_client->subscribe(ui->lineEditTopic->text());
    if (!subscription) {
        QMessageBox::critical(this, u"Error"_s,
                              u"Could not subscribe. Is there a valid connection?"_s);
        return;
    }

In diesem Beispiel abonnieren wir alle Themen. Weitere Informationen über den Empfang von Nachrichten zu bestimmten Themen finden Sie im Beispiel MQTT-Abonnements.

Ein Beispiel für die Verwendung der Klasse QMqttClient in einer Anwendung Qt Quick finden Sie unter Qt Quick Subscription.

Dateien:

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.