Fubo Docs
  • 概要
    • MQTT: IoTメッセージングの標準
    • MQTT 仕様
    • 初心者ガイド
  • チュートリアル
    • Node.js MQTT クライアントガイド
    • MQTTブローカーに接続する
    • MQTTメッセージの公開
    • MQTTメッセージの購読
    • 受信メッセージ
  • 高度なトピック
    • セッションとQoS
    • MQTT セキュリティメカニズム
    • MQTT 保持メッセージ
Powered by GitBook
On this page
  • サンプルコード
  • メッセージが保持されているかを検出する
  • メッセージからサブスクリプション識別子を抽出します
  • 受信したJSONペイロードで作業する
  1. チュートリアル

受信メッセージ

メッセージイベントを処理することによってメッセージが受信されます。形式は以下の通りです:

function (topic, message, packet) {}

以下に示すのは例示コードです:

//handle incoming messages
client.on('message',function(topic, message, packet){
	console.log("message is "+ message);
	console.log("topic is "+ topic);
	console.log("packet =" +JSON.stringify(packet));
	console.log("packet retain =" +packet.retain);
});

メッセージにはテキストメッセージが含まれ、パケットオブジェクトには、以下に示すように、リテインフラグなどのメッセージプロパティに加えて、メッセージがバッファオブジェクトとして含まれています

message is {"volts":240}
topic is testtopic
packet ={"cmd":"publish","retain":false,"qos":0,"dup":false,"length":27,"topic":"testtopic","payload":{"type":"Buffer","data":[123,34,118,111,108,116,115,34,58,50,52,48,125]},"properties":{"subscriptionIdentifier":1}}

サンプルコード

次のコードは on.message() 関数の一部です。

メッセージが保持されているかを検出する

console.log("packet retain =" +packet.retain);
if(packet.retain)
console.log("message is a retained message");
else
console.log("message is not retained message");

メッセージからサブスクリプション識別子を抽出します

console.log("subscription Identifier= "+packet.properties.subscriptionIdentifier)

受信したJSONペイロードで作業する

受信したJSONペイロードを使用するには、まず次を使用してペイロードをJavaScriptオブジェクトに変換する必要があります:

let message=JSON.parse(message);

受信したメッセージの例です

message is {“volts”:240}

電圧を得るために、私たちは以下のことを行います

let message=JSON.parse(message);
let volts=message.volts;

ペイロードがJSONでない可能性があるため、テストする必要があります。以下に示すように、try catchシーケンス(参照)を使用するのが最も簡単な方法です。

try
{
message=JSON.parse(message);
let volts=message.volts
console.log("volts="+volts);
}
catch(err)
{
	console.log("not JSON");
}
PreviousMQTTメッセージの購読NextセッションとQoS

Last updated 12 months ago