【ラズパイ x IoTネットワーク】MQTTをローカルネットワーク間で通信してみる・その3 〜 Aedesブローカーを動かそう
※ 当ページには【広告/PR】を含む場合があります。
2020/09/13
ブローカーの実装
// 👇aedesインスタンスの取得
const aedes = require('aedes')();
aedes.on('clientError', function (client, err) {
console.log('client error', client.id, err.message, err.stack)
});
aedes.on('connectionError', function (client, err) {
console.log('client error', client, err.message, err.stack)
});
aedes.on('publish', function (packet, client) {
if (client) {
console.log('message from client', client.id)
}
});
aedes.on('subscribe', function (subscriptions, client) {
if (client) {
console.log('subscribe from client', subscriptions, client.id)
}
});
aedes.on('unsubscribe', function (subscriptions, client) {
if (client) {
console.log('unsubscribe from client', subscriptions, client.id)
}
});
aedes.on('client', function (client) {
console.log('new client', client.id)
});
aedes.on('clientReady', function (client) {
console.log('client is ready', client.id)
});
aedes.on('clientDisconnect', function (client) {
console.log('client disconnected', client.id)
});
const server = require('net').createServer(aedes.handle);
const port = 1883;
server.listen(port, function () {
console.log(`Server running at mqtt://localhost:${port}/`);
});
aedes.on
client:
新規クライアントが登録されたときに処理
clientReady:
クライアントの初期化完了し、通信待機状態になったときの処理
clientDisconnect:
クライアントの通信が正常に切断されたときに処理
clientError:
通信中のクライアントに異常が発生した際に処理
connectionError:
クライアントの初期化に失敗した場合に処理
publish:
パブリッシャーがメッセージをブローカーに送信した時の処理
第一引数にメッセージパケットを含める
この場合トピックはpacket.topicから取り出し
subscribe:
サブスクライバーが購読をリクエストした時の処理
第一引数にトピックを含むオブジェクトを指定
unsubscribe:
サブスクライバーが購読を取り止める時に処理
第一引数にトピックを含むオブジェクトを指定
closed:
サーバーが終了した際に処理
サーバーの起動とクライアントの接続
$ node broker.js
Server running at mqtt://localhost:1883/
#👇サブスクライバーの接続
new client mqttjs_149bec5b
client is ready mqttjs_149bec5b
subscribe from client [ { topic: 'hoge/piyo/fuga', qos: 0 }, qos: 0 ] mqttjs_149bec5b
#...
#👇サブスクライバーの切断
client disconnected mqttjs_149bec5b
unsubscribe from client [ 'hoge/piyo/fuga' ] mqttjs_149bec5b
mqtt.js
まとめ
参考サイト
記事を書いた人
ナンデモ系エンジニア
電子工作を身近に知っていただけるように、材料調達からDIYのハウツーまで気になったところをできるだけ細かく記事にしてブログ配信してます。
カテゴリー