简单MQTT客户端
创建一个简单的遥测应用程序。
简单MQTT客户端展示了如何创建一个最小化客户端应用程序。
要使用该应用,您首先指定一个代理,例如test.mosquitto.org或broker.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公司及其全球子公司和关联公司的商标。所有其他商标均为其各自所有者的财产。