mqtt を使用して指定された URL に json データを公開する次のコードがあります。初期データは http から取得されます。
var request = require('request');
var JSONStream = require('JSONStream');
var es = require('event-stream');
var mqtt = require('mqtt');
request({url: 'http://isaacs.couchone.com/registry/_all_docs'})
.pipe(JSONStream.parse('rows.*'))
.pipe(es.mapSync(function (data) {
console.info(data);
var client = mqtt.createClient(1883, 'localhost');
client.publish('NewTopic', JSON.stringify(data));
client.end();
return data;
}))
以下は、mqtt を介して (上記のコードで) 公開されたデータをサブスクライブするサブスクライバー コードです。
var mqtt = require('mqtt');
var client = mqtt.createClient();
client.subscribe('NewTopic');
client.on('message', function(topic, message) {
console.info(message);
});
上記のコードでは、'message' で指定した url のすべての json データを取得します。受信したデータから 'id' と 'value' を抽出し、単一の JSON オブジェクトとして作成し、mqtt に公開する必要があります。別のクライアントが 'id' と 'value' のみを json データとしてサブスクライブできるようにします。