En esta página

Cliente MQTT simple

Creación de una aplicación de telemetría minimalista.

Cliente MQTT con campos Host, Port, Protocol, opciones WebSockets y Secure, entradas Topic y Message, y log que muestra los cambios de estado.

Simple MQTT Client muestra cómo crear una aplicación cliente minimalista.

Para usar la aplicación, primero se especifica un Host, un Puerto, Secure on/off, WebSockets on/off, y Protocolo. A continuación, haga clic en conectar. Después puedes suscribirte a un tema y enviar un mensaje, que también recibirás. También puede ejecutar la aplicación dos veces. Publica en una y Suscríbete en la otra, y los mensajes se transmitirán.

Opciones de simpleclient

  • Host - puedes usar test.mosquitto.org o broker.hivemq.com
  • Puerto - puerto al que conectarse, dependerá de la selección de WebSockets y la selección de Secure
  • WebSockets - puede especificar: seleccionado (activado) o no seleccionado (desactivado)
  • Secure - puede especificar: seleccionado (activado) o no seleccionado (desactivado)
  • Protocolo: puede especificar
    • mqtt 3.1
    • mqtt 3.1.1
    • mqtt 5.0
  • Tema - Un tema para publicar o suscribirse
  • Mensaje - Un mensaje para enviar sobre el tema si está publicando

Configuración de la conexión

Estas son las combinaciones habituales, y funcionarán con test.mosquitto.org. Para broker.hivemq.com comprueba la información en los enlaces. Tenga en cuenta que si Secure está activado puede ser necesario instalar certificados en el ordenador. También puede ser necesario añadir el certificado al cliente mqtt en código.

  • Puerto 1883, Secure=desactivado, WebSockets=desactivado - mqtt sobre tcp
  • Puerto 8883, Secure=habilitado, WebSockets=deshabilitado - mqtt sobre ssl
  • Puerto 8080, Secure=desactivado, WebSockets=activado - mqtt sobre websockets
  • Puerto 8081, Secure=habilitado, WebSockets=habilitado - mqtt sobre websockets seguros

Para más información sobre los brokers, consulte

Nota: Los puertos 1883 y 8080 no están cifrados, por lo que sólo son adecuados para desarrollo y pruebas. En producción, utilice siempre conexiones cifradas.

Nota: WebAssembly sólo soporta WebSockets habilitados.

Creación de un cliente

En primer lugar, utilizamos la clase QMqttClient para crear un cliente MQTT. La clase proporciona propiedades para establecer un ID de cliente único, así como el nombre de host del broker y el puerto al que conectarse:

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

Nosotros no establecemos el ID de cliente, por lo que se nos generará automáticamente.

A continuación, nos conectamos a QMqttClient::messageReceived() para recibir todos los mensajes enviados al broker:

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

Cuando los usuarios se suscriben a temas en el cliente, llamamos a QMqttClient::subscribe() en el tema especificado:

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

En este ejemplo, nos suscribimos a todos los temas. Para obtener más información sobre cómo recibir mensajes sobre temas concretos, consulte el ejemplo Suscripciones MQTT.

Para ver un ejemplo de cómo utilizar la clase QMqttClient en una aplicación Qt Quick, consulte Qt Quick Subscription.

Archivos:

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