Sur cette page

Client MQTT simple

Création d'une application de télémétrie minimaliste.

Client MQTT avec champs Host, Port, Protocol, options WebSockets et Secure, entrées Topic et Message, et journal montrant les changements d'état.

Simple MQTT Client montre comment créer une application client minimaliste.

Pour utiliser l'application, vous devez d'abord spécifier un hôte, un port, Secure on/off, WebSockets on/off, et un protocole. Cliquez ensuite sur Connecter. Ensuite, vous pouvez vous abonner à un sujet et envoyer un message, que vous recevrez également. Vous pouvez également exécuter l'application deux fois. Publier dans l'une et S'abonner dans l'autre, et les messages seront transmis.

Options de simpleclient

  • Host - vous pouvez utiliser test.mosquitto.org ou broker.hivemq.com
  • Port - port de connexion, dépendra de la sélection WebSockets et de la sélection Secure
  • WebSockets - vous pouvez spécifier : sélectionné (activé) ou non sélectionné (désactivé)
  • Secure - vous pouvez spécifier : sélectionné (activé) ou non sélectionné (désactivé)
  • Protocole - vous pouvez spécifier
    • mqtt 3.1
    • mqtt 3.1.1
    • mqtt 5.0
  • Sujet - Sujet à publier ou auquel s'abonner
  • Message - Un message à envoyer sur le sujet si vous le publiez

Paramètres de connexion

Il s'agit des combinaisons habituelles, qui fonctionneront avec test.mosquitto.org. Pour broker.hivemq.com, vérifiez les informations dans les liens. Notez que si le mode sécurisé est activé, il peut être nécessaire d'installer des certificats sur l'ordinateur. Il peut également être nécessaire d'ajouter le certificat au client mqtt dans le code.

  • Port 1883, Secure=désactivé, WebSockets=désactivé - mqtt sur tcp
  • Port 8883, Secure=enabled, WebSockets=disabled - mqtt over ssl
  • Port 8080, Secure=disabled, WebSockets=enabled - mqtt over websockets
  • Port 8081, Secure=enabled, WebSockets=enabled - mqtt over secure websockets

Pour plus d'informations sur les courtiers, voir

Remarque : les ports 1883 et 8080 ne sont pas cryptés et ne conviennent donc qu'à des fins de développement et de test. En production, utilisez toujours des connexions cryptées.

Note : WebAssembly ne supporte que les WebSockets activés.

Création d'un client

Tout d'abord, nous utilisons la classe QMqttClient pour créer un client MQTT. La classe fournit des propriétés pour définir un identifiant client unique ainsi que le nom de l'hôte du broker et le port auquel se connecter :

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

Nous ne définissons pas l'identifiant du client, qui sera donc automatiquement généré pour nous.

Ensuite, nous nous connectons à QMqttClient::messageReceived() pour recevoir tous les messages envoyés au courtier :

    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);
    });

Lorsque les utilisateurs s'abonnent à des sujets dans le client, nous appelons QMqttClient::subscribe() sur le sujet spécifié :

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;
    }

Dans cet exemple, nous nous abonnons à tous les sujets. Pour plus d'informations sur la manière de recevoir des messages sur des sujets particuliers, voir l'exemple MQTT Subscriptions.

Pour un exemple d'utilisation de la classe QMqttClient dans une application Qt Quick, voir Qt Quick Subscription.

Fichiers :

© 2026 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.