简单MQTT客户端

创建一个简单的遥测应用程序。

简单MQTT客户端展示了如何创建一个最小化客户端应用程序。

要使用该应用,您首先指定一个代理,例如test.mosquitto.orgbroker.hivemq.com,以及端口号1883,并与之连接。然后,您可以订阅一个主题并发送消息,您也将收到这些消息。

注意:端口号1883未加密,因此仅适用于开发测试。在生产中,始终使用加密连接。

创建客户端

首先,我们使用QMqttClient类创建一个MQTT客户端。该类提供属性来设置唯一的客户端ID以及要连接的代理主机名和端口号。

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

我们没有设置客户端ID,因此它将自动为我们生成。

接下来,我们将连接到QMqttClient::messageReceived()以便接收发送到代理的所有消息

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

当用户在客户端订阅主题时,我们在指定的主题上调用QMqttClient::subscribe()

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

在此示例中,我们订阅了所有主题。有关特定主题上接收消息的更多信息,请参阅MQTT订阅示例。

有关如何在Qt Quick应用程序中使用QMqttClient类的示例,请参阅Qt Quick订阅

文件

© 2024 Qt公司。本文件中包含的文档贡献是相应所有者的版权。本文件中的文档依据自由软件基金会发布的GNU自由文档许可证版本1.3的条款进行分发。Qt及其相应商标是芬兰Qt公司及其全球子公司和关联公司的商标。所有其他商标均为其各自所有者的财产。