node.jsによるデータ送受信

screenshot_1469

OpenBlocks IoT BX1とインテルEdison Kitでnode.jsを使用してリアルタイムデータ送受信を行うためにMQTTを使用します。

MQTTを使用することでデータ送信側がpublisher(パブリッシャ)、データ受信側がsubscriber(サブスクライバ)となり、データはTopic(トピック)として送受信されます。

publisherはデータをTopicを指定して送信します。subscriberは自信が受信したいデータのTopicを予めsubscribe(サブスクライブ)しておくことで、送信されたタイミングでリアルタイムで受信できます。

screenshot_1470

データ本体のPayloadのフォーマットはMQTTでは規定されていませんが、データ量を最適化するためにはバイナリでデータ送信が出来るMessagePackを使用します。MessagePackは様々な言語・デバイスで動作できるようにここでライブラリが提供されています。

・ データ送信例

var opts = {
    username:username,
    password:password,
    rejectUnauthorized : false,
    certPath: SECURE_CERT,
    encoding: 'binary'
};
var client = mqtt.createSecureClient(connect_port, connect_host, opts);
client.publish(topic, msgpack.pack(data), {qos:1, messageId:seqid, retain:true});
   // dataがMessagePackでエンコードされて送信される
if (connectArchitect == false) {
   // エラー処理
} else {
   // 正常処理
}

・データ受信例

var opts = {
    username:username,
    password:password,
    rejectUnauthorized : false,
    certPath: SECURE_CERT,
    encoding: 'binary'
};
var client = mqtt.createSecureClient(connect_port, connect_host, opts);
client.on('connect', function() {

    client.subscribe('topic/#');
});
client.on('message', function (topic, message) {

   var response = msgpack.unpack(message);
   // responseにMessagePackからデコードされたデータが入る
});

データ送信・データ受信例ではMQTTサーバとの接続時にユーザアカウントでの認証およびデータフォーマットをバイナリで指定してTLS (SSL)通信で接続しています。

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Google フォト

Google アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中