Node.js MQTT クライアントガイド
node.js MQTTクライアントは、MQTTブローカーでメッセージを公開したりトピックを購読するために使用できるオープンソースのクライアントです。次の方法でインストールできます:
npm install mqtt --save
# and To install the command line tools
npm install mqtt -gクライアント向けのドキュメントはこちらでご覧いただけます
このチュートリアルでは、重要なクライアント機能をカバーし、シンプルなパブリッシュサブスクライブノード、jsの例示スクリプトを作成します。
クライアントを使用するには、次のものを使用する必要があります:
const mqtt=require('mqtt');スクリプトの先頭に
概要
Node.jsのスクリプトは非同期であり、イベントを使用します。何かが起こるとイベントがトリガーされます。例えば、クライアントが接続したときなどです。
イベントリスナーを作成して、興味のあるイベントを監視し、このリスナーがコールバック関数を呼び出してイベントを処理します。
接続方法
これはメインメソッドで、呼び出されるとMQTTブローカーに接続し、クライアントクラスを返します。
翻訳テキスト:
翻訳テキスト:
通常、メソッドに渡す必要がある多くのオプションがあり、そのオプションは通常、JavaScriptオブジェクトとして作成されます。例えば。
ユーザー名とパスワード認証およびクリーンセッションを使用するには、次のオプションを使用します。
MQTTプロトコルはCONNACKメッセージで接続を認識します。
これにより、クライアントでon_connectイベントが発生し、次のようにリスナーを作成することで調査できます:
リスナーは接続イベントを待ち、コールバック関数を呼び出します。この例では、クライアントが接続するとメッセージを単に表示します。
私たちは今、最初の例のスクリプトを試すことができます。
このスクリプトはbroker.fubogroup.comのMQTTブローカーに接続し、接続時にメッセージを表示します。
注目すべき点は、コマンドプロンプトのカーソルが新しい行にあり、点滅していることです。
これは、クライアントがまだブローカーに接続されており、イベントループに参加しているためです。
しかし、私たちは台本の終わりにいるので、起こりうるのはイベントだけです。だから私たちの台本はそこに座って何もしません。
スクリプトを終了するには、クライアント接続を閉じてください。
on_connect イベントは、connected というフラグを true に設定します。このフラグには次のようにアクセスできます: client.connected.
私たちのシンプルなスクリプトを変更して、このフラグを前後に印刷するようにしました:
スクリプトを実行すると、次のように表示されるはずです:
ノード接続スクリプト2
接続失敗
接続が失敗した場合はどうなりますか?
ノードクライアントは接続失敗のためのエラーイベントを提供します。これを監視するためには、次のようにこのイベントのリスナーを作成する必要があります:
残応に、これは認証失敗のような失敗のみを捕捉します。
誤ったポートまたは誤ったアドレスに接続しようとすると、エラーは生成されず、クライアントは再接続を試み続けることになります。
エラーが認証失敗を検出した場合、クライアントが継続して接続を試みるため、終了する必要があります。
したがって、on_errorイベントリスナーは以下のようなものであるべきです:
メッセージを公開する
メッセージを公開するには:
オプションとコールバックパラメータは任意です。オプションにはメッセージフラグの保持、QoSなどが含まれます。例えば
そして
出版する前に、接続されていることを確認するのが賢明です:
しかし、接続が非同期であるため、クライアントが接続される前にif 文が試される可能性が高いため、これはうまくいかないでしょう。
したがって、接続して公開し、切断するだけの場合は、on_connectコールバックでpublishを呼び出すべきです。
定期的に公開する必要がある場合、例えばステータス情報を送信するときは、以下に示すように setInterval 関数を使用してください。
トピックの購読
購読するには、client.subscribeメソッドを使用します。一般的な形式は次のとおりです:
単一のトピックのみを購読したい場合は、トピック文字列メソッドを使用します。
配列メソッドを使用する場合は、同じQoSで複数のトピックを購読したい場合に使用します。つまり、オプションで渡すQoSは配列内のすべてのトピックに適用されます。
オブジェクトメソッドを使用するのは、異なるQoS 設定で複数のトピックを購読したい場合です。使用例:
受信メッセージ
トピックに登録する必要があります。
新しいメッセージが到着すると、メッセージイベントがトリガーされます。
このイベントを処理するにはリスナーを作成する必要があります。
コールバックは3つのパラメータを受け入れることができます。 topic 、 message 、そして packet 。
パケットオブジェクトには、メッセージ、トピック、QOS、保持などのメッセージの詳細が含まれています。
その内容を見るには、次を使用してください:
以下は、受信したパケットの例のスクリーンショットです:
ノードjs-受信パケット
もしリテインフラグを見たい場合は、次のように使用します:
トピック、メッセージ、パケットを印刷して保持するには、次のコードを使用します:
最終脚本例
最終スクリプトはブローカーに接続し、トピックのコレクションを購読して、x 秒ごとにそのトピックの1つにメッセージを公開します。
受信したメッセージをコンソールに出力し、2 回のループ後に終了します。
ソーステキスト:スクリプトが実行されているスクリーンショットはこちらです: 翻訳テキスト:
ノードMQTTスクリプト例
スクリプトが明らかに実行中であるにもかかわらず、スクリプトの終了メッセージが表示されることに気付くべきです。
これは、node.jsの非同期性を示しています。
SSLを使用しています
接続をSSLを使用して安全にすることができます。以下はSSLを使用してブローカーに接続する簡単な接続スクリプトです:
rejectUnauthorized : false オプションは、証明書にドメインの不一致がある場合にのみ必要であり、通常は使用すべきではありません。
証明書ファイルが最初に読み込まれ、オプションとして渡されることに注意してください。
クライアント証明書も使用している場合は、次のものを使用してください:
オプションで:
ここに動作するSSL 接続の例示スクリプトがあります:
詳細はGithubのリファレンスを参照してください
Last updated
