受信メッセージ

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

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");
}

Last updated