Apache Apollo と Node.js で MQTT を試してみる
ひょんなことから Apache Apollo と Node.js で MQTT 経由で pub/sub するかもしれなくなったので、その検証のメモ。
まず、Apache Apollo をインストールする。Homebrew から一発で。
$ brew install apollo
インストールが終わったら Broker というものを作る。
$ `brew --prefix`/Cellar/apollo/1.6/bin/apollo create `brew --prefix`/var/apollo
Broker を作ったら Apollo を起動する。
$ `brew --prefix`/var/apollo/bin/apollo-broker
apollo のコンソールが起動するので run と入力して broker を起動する。
http://localhost:61680/broker から Web のインタフェースが表示できるか確認する。デフォルトの ID は admin, Password は password でログイン出来る。
ここからは Node.js 側の準備。よくメンテナンスされていてドキュメントも豊富なので MQTT.js というライブラリを選択。npm からインストール。
$ npm install mqtt
Subscribe する側のコード。
var mqtt = require('mqtt'); var client = mqtt.createClient(61613, { username: 'admin', password: 'password' }); client.subscribe('message'); client.on('message', function() { console.log(arguments); });
Publish する側のコード。一秒置きに適当なメッセージを送ってみる。
var mqtt = require('mqtt'); var client = mqtt.createClient(61613, { username: 'admin', password: 'password' }); setInterval(function() { client.publish('message'); client.publish('message', 'foo'); client.publish('message', Date.now().toString()); }, 1000);
publish すると subscribe している側でこんなログが出るはず。
{ '0': 'message', '1': '', '2': { cmd: 'publish', retain: false, qos: 0, dup: false, length: 9, topic: 'message', payload: '' } } { '0': 'message', '1': 'foo', '2': { cmd: 'publish', retain: false, qos: 0, dup: false, length: 12, topic: 'message', payload: 'foo' } } { '0': 'message', '1': '1374848125563', '2': { cmd: 'publish', retain: false, qos: 0, dup: false, length: 22, topic: 'message', payload: '1374848125563' } }
こんな具合で出来た。MQTT なんて使ったことねーわーって感じでしたが、ライブラリが充実していたので簡単に出来ました。







