QMqttClient Class

QMqttClientクラスは、MQTTブローカーと通信するセントラルアクセスを表します。詳細...

Header: #include <QMqttClient>
CMake: find_package(Qt6 REQUIRED COMPONENTS Mqtt)
target_link_libraries(mytarget PRIVATE Qt6::Mqtt)
qmake: QT += mqtt
Inherits: QObject

パブリックタイプ

enum ClientError { NoError, InvalidProtocolVersion, IdRejected, ServerUnavailable, BadUsernameOrPassword, …, Mqtt5SpecificError }
enum ClientState { Disconnected, Connecting, Connected }
enum ProtocolVersion { MQTT_3_1, MQTT_3_1_1, MQTT_5_0 }
enum TransportType { IODevice, AbstractSocket, SecureSocket }

プロパティ

パブリック関数

QMqttClient(QObject *parent = nullptr)
virtual ~QMqttClient() override
void authenticate(const QMqttAuthenticationProperties &prop)
bool autoKeepAlive() const
bool cleanSession() const
QString clientId() const
void connectToHost()
void connectToHostEncrypted(const QSslConfiguration &conf)
QMqttConnectionProperties connectionProperties() const
void disconnectFromHost()
QMqttClient::ClientError error() const
QString hostname() const
quint16 keepAlive() const
QMqttLastWillProperties lastWillProperties() const
QString password() const
quint16 port() const
QMqttClient::ProtocolVersion protocolVersion() const
qint32 publish(const QMqttTopicName &topic, const QByteArray &message = QByteArray(), quint8 qos = 0, bool retain = false)
qint32 publish(const QMqttTopicName &topic, const QMqttPublishProperties &properties, const QByteArray &message = QByteArray(), quint8 qos = 0, bool retain = false)
bool requestPing()
QMqttServerConnectionProperties serverConnectionProperties() const
void setConnectionProperties(const QMqttConnectionProperties &prop)
void setLastWillProperties(const QMqttLastWillProperties &prop)
void setTransport(QIODevice *device, QMqttClient::TransportType transport)
QMqttClient::ClientState state() const
QMqttSubscription *subscribe(const QMqttTopicFilter &topic, quint8 qos = 0)
QMqttSubscription *subscribe(const QMqttTopicFilter &topic, const QMqttSubscriptionProperties &properties, quint8 qos = 0)
QIODevice *transport() const
void unsubscribe(const QMqttTopicFilter &topic)
void unsubscribe(const QMqttTopicFilter &topic, const QMqttUnsubscriptionProperties &properties)
QString username() const
QByteArray willMessage() const
quint8 willQoS() const
bool willRetain() const
QString willTopic() const

パブリックスロット

void setAutoKeepAlive(bool autoKeepAlive)
void setCleanSession(bool cleanSession)
void setClientId(const QString &clientId)
void setError(QMqttClient::ClientError error)
void setHostname(const QString &hostname)
void setKeepAlive(quint16 keepAlive)
void setPassword(const QString &password)
void setPort(quint16 port)
void setProtocolVersion(QMqttClient::ProtocolVersion protocolVersion)
void setState(QMqttClient::ClientState state)
void setUsername(const QString &username)
void setWillMessage(const QByteArray &willMessage)
void setWillQoS(quint8 willQoS)
void setWillRetain(bool willRetain)
void setWillTopic(const QString &willTopic)

シグナル

void authenticationFinished(const QMqttAuthenticationProperties &p)
void authenticationRequested(const QMqttAuthenticationProperties &p)
void autoKeepAliveChanged(bool autoKeepAlive)
void brokerSessionRestored()
void cleanSessionChanged(bool cleanSession)
void clientIdChanged(QString clientId)
void connected()
void disconnected()
void errorChanged(QMqttClient::ClientError error)
void hostnameChanged(QString hostname)
void keepAliveChanged(quint16 keepAlive)
void messageReceived(const QByteArray &message, const QMqttTopicName &topic = QMqttTopicName())
void messageSent(qint32 id)
void messageStatusChanged(qint32 id, QMqtt::MessageStatus s, const QMqttMessageStatusProperties &properties)
void passwordChanged(QString password)
void pingResponseReceived()
void portChanged(quint16 port)
void protocolVersionChanged(QMqttClient::ProtocolVersion protocolVersion)
void stateChanged(QMqttClient::ClientState state)
void usernameChanged(QString username)
void willMessageChanged(QByteArray willMessage)
void willQoSChanged(quint8 willQoS)
void willRetainChanged(bool willRetain)
void willTopicChanged(QString willTopic)

詳細説明

MQTT クライアントとは、MQTT を使用して MQTT サーバー(ブローカーとも呼ばれる)へのネットワーク接続を作成するプログラムまたはデバイスのことである。接続要求には、一意のクライアント識別子を含める必要がある。オプションで、Will Topic、Will Message、ユーザー名、パスワードを含むことができる。

接続が作成されると、クライアントは他のクライアントが受信に興味を持ちそうなメッセージを送信したり、トピックに関する通知を要求するためにサブスクライブしたり、通知の要求を削除するためにアンサブスクライブしたり、ブローカから切断したりすることができます。

メンバ型ドキュメント

enum QMqttClient::ClientError

この enum 型は、クライアントのエラー状態を指定します。

定数説明
QMqttClient::NoError0エラーは発生しませんでした。
QMqttClient::InvalidProtocolVersion1ブローカは指定されたプロトコルバージョンを使用した接続を受け付けません。
QMqttClient::IdRejected2クライアント ID が不正です。これは長さに関連している可能性があります。
QMqttClient::ServerUnavailable3ネットワーク接続は確立されているが、ブローカ側でサービスが利用できない。
QMqttClient::BadUsernameOrPassword4ユーザー名またはパスワードのデータが不正です。
QMqttClient::NotAuthorized5クライアントは接続を許可されていません。
QMqttClient::TransportInvalid256基礎となるトランスポートがエラーを起こした。たとえば、接続が予期せず中断された。
QMqttClient::ProtocolViolation257クライアントがプロトコル違反に遭遇したため、接続を切断した。
QMqttClient::UnknownError258不明なエラーが発生しました。
QMqttClient::Mqtt5SpecificError259エラーは MQTT プロトコル・レベル 5 に関連している。理由コードによって詳細がわかるかもしれない。

enum QMqttClient::ClientState

この列挙型は、クライアントが入ることのできる状態を指定する。

定数説明
QMqttClient::Disconnected0クライアントはブローカーから切断されています。
QMqttClient::Connecting1接続要求が行われましたが、ブローカはまだ接続を承認していません。
QMqttClient::Connected2クライアントがブローカに接続している。

enum QMqttClient::ProtocolVersion

この enum は、ブローカとの通信時に使用する MQTT 標準のプロトコルバージョンを指定します。

定数説明
QMqttClient::MQTT_3_13MQTT 標準 3.1
QMqttClient::MQTT_3_1_14MQTT 規格 3.1.1、一般にはバージョン 4 と呼ばれる。
QMqttClient::MQTT_5_05MQTT 標準 5.0

enum QMqttClient::TransportType

この列挙型は、ブローカへの接続をインスタンス化する際に使用する接続メソッドを指定する。

定数説明
QMqttClient::IODevice0トランスポートはQIODevice に基づいたクラスを使用する。
QMqttClient::AbstractSocket1トランスポートはQAbstractSocket に基づいたクラスを使用する。
QMqttClient::SecureSocket2トランスポートはQSslSocket に基づいたクラスを使用する。

プロパティ ドキュメント

autoKeepAlive : bool

このプロパティは、クライアントがキープアライブメッセージをサーバーに自動管理す るかどうかを保持する。

このプロパティがtrue の場合、クライアントは自動的に、keepAlive の間隔でサーバーにpingメッセージを送信する。

そうでない場合、ユーザは指定された接続間隔内に手動でrequestPing を呼び出す必要があります。間隔内に ping が送信されなかった場合、サーバは接続を切断します。

このプロパティのデフォルトはtrue である。

アクセス関数:

bool autoKeepAlive() const
void setAutoKeepAlive(bool autoKeepAlive)

Notifier シグナル:

void autoKeepAliveChanged(bool autoKeepAlive)

keepAlive ()、requestPing ()、serverConnectionProperties ()、pingResponseReceived ()も参照

cleanSession : bool

このプロパティは、ブローカーに接続した後の状態を保持します。

アクセス関数:

bool cleanSession() const
void setCleanSession(bool cleanSession)

Notifier シグナル:

void cleanSessionChanged(bool cleanSession)

clientId : QString

このプロパティは、クライアントの識別子値を保持します。

各クライアントは、MQTT ブローカーに接続するために一意の ID を持つ必要がある。ユーザーによってクライアント ID が指定されていない場合は、接続が確立されたときに自動的に生成されます。

アクセス機能

QString clientId() const
void setClientId(const QString &clientId)

Notifier シグナル:

void clientIdChanged(QString clientId)

error : ClientError

クライアントの現在のエラーを指定します。

アクセス関数:

QMqttClient::ClientError error() const
void setError(QMqttClient::ClientError error)

Notifier シグナル:クライアントの現在のエラーを指定します:

void errorChanged(QMqttClient::ClientError error)

hostname : QString

このプロパティは、接続する MQTT ブローカのホスト名を保持する。

setTransport() でトランスポートが指定されていない場合、クライアントは指定されたホスト名自身へのソケット接続をインスタンス化する。

アクセス関数:

QString hostname() const
void setHostname(const QString &hostname)

通知シグナル:

void hostnameChanged(QString hostname)

keepAlive : quint16

このプロパティは、ブローカに定期的に ping メッセージを送信する間隔を保持する。

ブローカーへの接続が確立されると、クライアントは頻繁に更新を送信して、まだ接続可能であることを伝播する必要があります。これらの更新の間隔はこのプロパティで指定します。

間隔は秒単位で指定します。

猶予期間内にブローカーから応答がない場合、接続は切断されます。

アクセス関数

quint16 keepAlive() const
void setKeepAlive(quint16 keepAlive)

Notifier シグナル:

void keepAliveChanged(quint16 keepAlive)

autoKeepAlive(),requestPing(),pingResponseReceived()も参照

password : QString

このプロパティはブローカーに接続するためのパスワードを保持します。

アクセス関数:

QString password() const
void setPassword(const QString &password)

ノーティファイア・シグナル:

void passwordChanged(QString password)

port : quint16

このプロパティは、MQTT ブローカに接続するためのポートを保持します。

setTransport() でトランスポートが指定されていない場合、クライアントはこのポート番号のホストへのソケット接続をインスタンス化する。

アクセス関数:

quint16 port() const
void setPort(quint16 port)

Notifier シグナル:

void portChanged(quint16 port)

protocolVersion : ProtocolVersion

このプロパティは、接続に使用する MQTT 標準バージョンを保持する。

クライアントがブローカへの接続に使用する標準のバージョンを指定します。有効な値は以下のとおり:

  • 3: MQTT標準バージョン3.1。
  • 4: MQTT 標準バージョン 3.1.1(しばしば MQTT 4 と呼ばれる)。
  • 5: MQTTスタンダード5.0。

アクセス機能:

QMqttClient::ProtocolVersion protocolVersion() const
void setProtocolVersion(QMqttClient::ProtocolVersion protocolVersion)

Notifier シグナル:

void protocolVersionChanged(QMqttClient::ProtocolVersion protocolVersion)

state : ClientState

このプロパティは、クライアントの現在の状態を保持する。

アクセス関数:

QMqttClient::ClientState state() const
void setState(QMqttClient::ClientState state)

Notifier シグナル:

void stateChanged(QMqttClient::ClientState state)

username : QString

このプロパティは、ブローカーに接続するためのユーザー名を保持します。

アクセス関数:

QString username() const
void setUsername(const QString &username)

Notifier シグナル:

void usernameChanged(QString username)

willMessage : QByteArray

このプロパティは Will メッセージのペイロードを保持します。

アクセス関数:

QByteArray willMessage() const
void setWillMessage(const QByteArray &willMessage)

Notifier シグナル:

void willMessageChanged(QByteArray willMessage)

willQoS : quint8

このプロパティはWill Messageの送信と保存のQoSレベルを保持します。

アクセス関数:

quint8 willQoS() const
void setWillQoS(quint8 willQoS)

Notifier シグナル:

void willQoSChanged(quint8 willQoS)

willRetain : bool

このプロパティは、Will Message を将来の加入者が受信できるようにブローカーに保持するかどうかを保持します。

アクセス関数:

bool willRetain() const
void setWillRetain(bool willRetain)

Notifier シグナル:

void willRetainChanged(bool willRetain)

willTopic : QString

このプロパティは Will トピックを保持します。

アクセス関数:

QString willTopic() const
void setWillTopic(const QString &willTopic)

Notifier シグナル:

void willTopicChanged(QString willTopic)

メンバー関数ドキュメント

[explicit] QMqttClient::QMqttClient(QObject *parent = nullptr)

指定されたparent で新しい MQTT クライアントインスタンスを作成します。

[override virtual noexcept] QMqttClient::~QMqttClient()

MQTT クライアントを削除します。MQTT クライアントがまだ MQTT ブローカから切断されていない場合は、自動的に切断される。

void QMqttClient::authenticate(const QMqttAuthenticationProperties &prop)

ブローカに認証リクエストを送信する。prop 認証リクエストに必要な情報を指定する。

この関数は、QMqttClient::authenticationRequested シグナルが送信された後にのみコールする。

注意: 拡張認証は MQTT 5.0 標準の一部であり、クライアントがMQTT_5_0ProtocolVersion と指定した場合にのみ使用できます。

authenticationRequested() およびauthenticationFinished()も参照のこと

[signal] void QMqttClient::authenticationFinished(const QMqttAuthenticationProperties &p)

このシグナルは、拡張認証が終了した後に発行される。p は、認証プロセスに関する利用可能な詳細を指定する。

認証が成功すると、QMqttClient::connected が発行される。

注意: 拡張認証は MQTT 5.0 標準の一部であり、クライアントがMQTT_5_0ProtocolVersion として指定した場合にのみ使用できる。

authenticationRequested() およびauthenticate()も参照のこと

[signal] void QMqttClient::authenticationRequested(const QMqttAuthenticationProperties &p)

このシグナルは、クライアントがQMqttClient::connectToHost またはQMqttClient::connectToHostEncrypted を呼び出した後、接続が確立する前に発行される。拡張認証では、ブローカはQMqttClient::authenticate を呼び出して提供する必要がある追加の詳細を要求するかもしれません。p は、ブローカが提供するプロパティを指定します。

注意: 拡張認証は MQTT 5.0 標準の一部であり、クライアントがMQTT_5_0ProtocolVersion と指定した場合にのみ使用できる。

authenticationFinished() およびauthenticate()も参照のこと

[signal] void QMqttClient::brokerSessionRestored()

このシグナルは、クライアントがcleanSession プロパティをfalse に設定したブローカへの接続に成功し、 ブローカがセッションをリストアした後に発行されます。

クライアントが以前に同じclientId を使用して接続したことがある場合、セッションをリストアすることができます。

[invokable] void QMqttClient::connectToHost()

MQTT ブローカへの接続を開始します。

注意: この関数はメタオブジェクトシステムおよび QML から呼び出すことができます。Q_INVOKABLE を参照。

void QMqttClient::connectToHostEncrypted(const QSslConfiguration &conf)

MQTT ブローカへの暗号化接続を開始します。

conf 接続に使用する SSL 設定を指定します。

[signal] void QMqttClient::connected()

このシグナルは接続が確立されたときに発行される。

QMqttConnectionProperties QMqttClient::connectionProperties() const

クライアントがブローカに要求したコネクションプロパティを返します。

注意: QMqttConnectionProperties は、クライアントがMQTT_5_0ProtocolVersion と指定した場合にのみ使用できます。

setConnectionProperties()も参照

[invokable] void QMqttClient::disconnectFromHost()

MQTT ブローカとの接続を切断する。

注意: この関数はメタオブジェクトシステムや QML から呼び出すことができます。Q_INVOKABLE を参照。

[signal] void QMqttClient::disconnected()

このシグナルはコネクションがクローズされたときに送出されます。コネクションがクローズされるのは、disconnectFromHost() がコールされたときか、ブローカが切断したときです。

QMqttLastWillProperties QMqttClient::lastWillProperties() const

最後のプロパティを返します。

注意: QMqttLastWillProperties は、クライアントがMQTT_5_0ProtocolVersion と指定した場合にのみ使用できます。

setLastWillProperties()も参照してください

[signal] void QMqttClient::messageReceived(const QByteArray &message, const QMqttTopicName &topic = QMqttTopicName())

このシグナルは新しいメッセージを受信したときに発せられます。メッセージのカテゴリーはtopic で指定され、内容はmessage である。

[signal] void QMqttClient::messageSent(qint32 id)

publish() 関数で送信されたメッセージがブローカーによって受信されたことを示します。idpublish() が返すものと同じで、メッセージのステータスを追跡するのに役立ちます。

[signal] void QMqttClient::messageStatusChanged(qint32 id, QMqtt::MessageStatus s, const QMqttMessageStatusProperties &properties)

このシグナルは、id で識別されるメッセージのステータスが変更されたときに発行されます。s はメッセージの新しいステータスを指定し、properties はサーバーが提供する追加のプロパティを指定します。

[signal] void QMqttClient::pingResponseReceived()

このシグナルは、ブローカがrequestPing() 呼び出しまたはkeepAlive() ping メッセージに応答し、接続がまだ有効である場合に発行されます。

[invokable] qint32 QMqttClient::publish(const QMqttTopicName &topic, const QByteArray &message = QByteArray(), quint8 qos = 0, bool retain = false)

指定されたtopicmessage をブローカに発行します。qos はメッセージ転送に必要な QoS レベルを指定します。

retaintrue に設定されている場合、メッセージは他のクライアントが接続してメッセージを受信できるようにブローカーに留まります。

メッセージを識別するために内部的に使用される ID を返します。

注: この関数はメタオブジェクトシステム経由でも QML からでも呼び出すことができます。Q_INVOKABLE を参照してください。

[invokable] qint32 QMqttClient::publish(const QMqttTopicName &topic, const QMqttPublishProperties &properties, const QByteArray &message = QByteArray(), quint8 qos = 0, bool retain = false)

propertiestopic を指定してmessage をブローカに発行します。qos はメッセージ転送に必要な QoS レベルを指定します。

retaintrue に設定されている場合、メッセージは他のクライアントが接続してメッセージを受信できるようにブローカー上に留まります。

メッセージを識別するために内部的に使用される ID を返します。

注意: properties がブローカーに渡されるのは、クライアントがMQTT_5_0ProtocolVersion と指定した場合のみです。

注意: この関数はメタオブジェクトシステムや QML から呼び出すことができます。Q_INVOKABLE を参照してください。

bool QMqttClient::requestPing()

ブローカーに ping メッセージを送信し、応答を期待します。

接続がアクティブでautoKeepAlivetrue の場合、この関数の呼び出しは失敗します。

手動でrequestPing() を使用するには、接続がアクティブである限り、keepAlive 間隔で毎回呼び出す必要があります。

pingが成功したかどうかを確認するには、pingResponseReceived() シグナルに接続する。

ping 要求を送信できた場合はtrue を返す。

pingResponseReceived()、autoKeepAlive()、keepAlive()も参照

QMqttServerConnectionProperties QMqttClient::serverConnectionProperties() const

接続試行後にブローカが返したQMqttServerConnectionProperties を返します。

これは、QMqttClient::setConnectionProperties で設定したクライアント側の接続プロパティがブローカに受け入れられたかどうかを確認するために使用できます。また、接続試行に失敗した場合、接続診断に使用することもできます。

注意: QMqttServerConnectionProperties は、クライアントがMQTT_5_0ProtocolVersion と指定した場合にのみ使用できます。

connectionProperties()も参照してください

void QMqttClient::setConnectionProperties(const QMqttConnectionProperties &prop)

接続プロパティをprop に設定します。QMqttConnectionProperties を使用すると、特定の機能セットを使用するようにサーバに要求できます。接続要求の後、QMqttClient::serverConnectionProperties を呼び出すことで、サーバ応答を取得できます。

注: 接続プロパティは、MQTT クライアントがDisconnected 状態である場合にのみ設定できる。

注: QMqttConnectionProperties は、クライアントがMQTT_5_0ProtocolVersion と指定した場合にのみ使用できる。

connectionProperties()も参照のこと

void QMqttClient::setLastWillProperties(const QMqttLastWillProperties &prop)

prop QMqttLastWillProperties では、ブローカに保存されるラストウィルメッセージの追加機能を設定できます。

注意: 接続プロパティは、MQTT クライアントがDisconnected 状態である場合にのみ設定できます。

注: QMqttLastWillProperties は、クライアントがMQTT_5_0ProtocolVersion と指定した場合にのみ使用できます。

lastWillProperties()も参照のこと

void QMqttClient::setTransport(QIODevice *device, QMqttClient::TransportType transport)

トランスポートをdevice に設定する。トランスポートはソケットタイプまたはQIODevice から派生したものであり、transport で指定される。

注意 : トランスポートを交換できるのは、MQTTクライアントがDisconnected 状態の場合のみである。

注意 : クライアントにカスタムトランスポートを設定しても、コネクション管理 の責任は引き継がれない。トランスポートは、QMqttClient::connectToHost()を呼び出す前に、QIODevice ベースのトランスポートの場合はオープンされ、ソケットタイプのトランスポートの 場合は接続されていなければならない。

transport()も参照のこと

QMqttSubscription *QMqttClient::subscribe(const QMqttTopicFilter &topic, quint8 qos = 0)

topic の通知を受け取るための新規サブスクリプションを追加する。パラメータqos は、セキュリティメッセージを受信するレベルを指定する。利用可能な QoS レベルの詳細については、QoS を参照してください。

この関数はQMqttSubscription へのポインタを返す。同じトピックが二度サブスクライブされた場合、返り値は同じサブスクリプションインスタンスを指す。MQTT クライアントはサブスクリプションのオーナーである。

QMqttSubscription *QMqttClient::subscribe(const QMqttTopicFilter &topic, const QMqttSubscriptionProperties &properties, quint8 qos = 0)

topic の通知を受け取るために新規サブスクリプションを追加する。パラメータproperties は、ブローカーによって検証される追加のサブスクリプション プロパティを指定する。パラメータqos は、セキュリティメッセージが受信されるレベルを指定する。利用可能な QoS レベルの詳細については、QoS を参照のこと。

この関数はQMqttSubscription へのポインタを返す。 同じトピックが二度サブスクライブされた場合、戻り値は同じサブスクリプションイン スタンスを指す。MQTT クライアントはサブスクリプションのオーナーである。

注意: properties は、クライアントがMQTT_5_0ProtocolVersion と指定したときのみブローカーに渡される。

QIODevice *QMqttClient::transport() const

ブローカとの通信に使用されるトランスポートを返す。

setTransport()も参照

void QMqttClient::unsubscribe(const QMqttTopicFilter &topic)

topic からサブスクリプションをアンサブスクライブする。subscribe()をコールして作成されたサブスクリプションには、いかなる通知も送られない。

注意: クライアントが購読を解除せずにブローカーとの接続を切断した場合、ブローカーはすべてのメッセージを保存し、次の再接続時に発行します。

void QMqttClient::unsubscribe(const QMqttTopicFilter &topic, const QMqttUnsubscriptionProperties &properties)

topic subscribe() をコールして作成されたサブスクリプションには、通知は送信されません。 は、ブローカーに渡す追加のユーザープロパティを指定します。properties

注意 : クライアントが購読を解除せずにブローカーから切断した場合、ブローカーはすべてのメッセージを保存し、次の再接続時に発行します。

注意: properties がブローカに渡されるのは、クライアントがMQTT_5_0ProtocolVersion と指定した場合のみです。

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