シンプルなMQTTクライアント

最小限の遠隔測定アプリケーションの作成

Simple MQTT Clientでは、最小限のクライアント・アプリケーションを作成する方法を示します。

このアプリケーションを使用するには、まず、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 Subscriptions の例を参照してください。

Qt Quick アプリケーションでQMqttClient クラスを使用する方法の例については、Qt Quick Subscription を参照してください。

ファイル

本ドキュメントに含まれる文書の著作権は、それぞれの所有者に帰属します 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。