MQTTメッセージの公開
このチュートリアルでは、node.js MQTTクライアントを使用してメッセージを公開する方法について説明します。
MQTTでメッセージを公開するときは、指定する必要があります
トピック
メッセージ
保持
QOS (0,1,2)
プロパティ (MQTT v5)
QOSに応じて、公開されたメッセージはブローカーからの確認を受け取ります(QOS=1,2)。
すべてのMQTTクライアントには、通常、保持、QoS、プロパティのデフォルトがあります。それらは通常、 0 、 false 、 null です。
QOS 1または2で公開する場合、メッセージにはmessageIdが割り当てられ、PubAckのmessageIdと組み合わせてブローカーにメッセージが受信されたかどうかを判断することができます。
送信メッセージのmessageIdが受信したPubAckメッセージのmessageIdと一致する場合、メッセージは正常に受信されたことになります。以下にmessageIdが 7844 の例を示します:
nodejs-mqtt-パブリッシュ
MQTT パブリッシュ API
メッセージを公開するには:
client.publish(topic, message, [options], [callback])オプションとコールバックパラメータは任意です。
オプションにはメッセージを保持するフラグ、QoSなどが含まれます。例えば
翻訳テキスト:そしてオプションと共に:
コールバックは次の用途に使用できます:
成功のためのテスト
公開されたメッセージIDをキャプチャします。
イベント
パブアックをキャプチャするには、packetreceiveイベントをリッスンする必要があります。
タイミング
ノード.jsは非同期関数を使用しているため、タイミングに注意する必要があります。
例えばそのプロセス
接続する
公開
公開が接続完了前に行われるため、機能しない可能性があります。他の言語では、単にこのように接続が完了するのを待ちます:
接続する
接続を待つ
公開
しかし、Node.jsではこれを行うことはできません。
接続が確立されるかどうかを公開する前にテストできます:
しかし、接続が非同期であるため、クライアントが接続される前にif 文が試される可能性が高いため、これもうまくいく可能性は低いです。
したがって、単に接続して、公開して、切断する場合は、on_connectコールバックでpublishを呼び出すべきです。
この方法なら、公開する前に接続されていることがわかります。
定期的に公開する必要がある場合(例えば、ステータス情報を送信するときなど)は、以下に示すようにsetInterval 関数を使用してください。
この状況では接続テストが機能します
メッセージペイロード
文字列、JSONデータ、バッファを送信できます。
整数または浮動小数点数を送信するには、まず以下のいずれかを使用して文字列に変換する必要があります:
ソーステキスト: JSON.stringify(value) または value.toString() ; 翻訳テキスト:
例えば、数値(浮動小数点)2.31を使用することができます:
そして
ブール値 true/false を送信するには、JSON データに変換して使用します。
バッファの使用にはBufferモジュールを使用してください
そして通常通りに公開します。
公開コールバックの使用
公開メソッドを呼び出す際には、公開が完了したときに呼び出されるコールバックを送信することができます。
完了とは、確認プロセスが完了していることを意味します(QOSが1または2)
私が使用しているコードは以下の通りです
以下の例で定義するコールバック関数がpubackです
テストメッセージを公開すると、次の出力が生成されます:
送信されているパケットは、公開者が送信しているパケットです。
確認を表示するために、パケット受信イベントを監視します。
この結果、次の出力が得られます: 翻訳テキスト:
トピックエイリアスを使用した出版
MQTTv5はトピックエイリアスに対応しています。トピックエイリアスの背後にある考え方は、より短いトピックを使用して公開パケットのサイズを削減することです。
トピックエイリアスを使用するには、まずパブリッシュを使用してエイリアスを設定し、その後トピックエイリアスと空のトピックフィールドを使用してパブリッシュできます。
ソーステキスト:ここにコードがあります: 翻訳テキスト:
注意:メッセージを受信するには、トピックエイリアスではなくトピック(testtopic)を購読する必要があります。
クライアント接続にのみ有効なトピックエイリアスについても注意する必要があります。他のクライアントは自分のトピックエイリアスを設定できます。
さらに、サーバーは通常トピックエイリアスを制限します(デフォルト=10) トピックエイリアス0は許可されていません。
公開例
QoS=1 および保持フラグを設定してメッセージを公開します
QOS=1でJSONメッセージを公開します
メッセージをmessageExpiryInterval 設定で公開する
注意:これを機能させるためには、クライアント接続をバージョン5に設定する必要があります
Last updated