JavaScriptやNode.jsを書いてる人はnpmコマンドなどは通常装備だと思うのでnpxでmqttを利用する方法のメモです。
JSerやNoder向けIoTって感じですね。とはいえMQTTをとりあえず試すってときの話です。
npmが入ってない人は素直にmosquittoをインストールでも良いかも。
MQTTクライアントライブラリ(MQTT.js)を利用
mqttをcliで利用できるかつnpmにレジストリされてるツール探してました。
Sub のほうなら、MQTT.js で「npx mqtt sub -t 'トピック' -h 'ホスト名'」みたいなの感じでどうでしょう?
— you (@youtoy) September 23, 2020
(意図と異なるかもですが)
Pubのほう、「npx mqtt pub -t 'トピック' -h 'ホスト名' -m 'from MQTT.js'」とかやったら、メッセージを送るたびにインストールがされて微妙でしたがw
探しても見つからないなぁと思ってたらmqtt.jsのCLI利用のドキュメントにありました。 @youtoyさんありがとうございます :)
subscribe側
$ npx mqtt sub -h ホスト名 \
-t トピック名 \
これで待ち受けてくれます。npxは一回だけインストールして実行してくれるのでグローバルインストール(npm i -g ~~)したく無い時に使えます。
publish側
$ npx mqtt pub -h ホスト名 \
-t トピック名 \
-m '{"content":"Hello!!! from MQTT!"}'
PubNubの場合
PubNubで5分でリアルタイムWebこと初め + MQTTでデバイス連携も など最近PubNub触ってるのでこちらもメモ。mosquittoのCLIとオプションが一緒なのでコピペで大丈夫でした。
subscribe側
$ npx mqtt sub -h mqtt.pndsn.com \
-t pub-c-xxxxxxxxxxxxxxxxxxxx/sub-c-xxxxxxxxxxxxxxxxxxxx/トピック名 \
-i pub-c-xxxxxxxxxxxxxxxxxxxx/sub-c-xxxxxxxxxxxxxxxxxxxx/クライアントID
publish側
$ npx mqtt pub -h mqtt.pndsn.com \
-t pub-c-xxxxxxxxxxxxxxxxxxxx/sub-c-xxxxxxxxxxxxxxxxxxxx/トピック名 \
-i pub-c-xxxxxxxxxxxxxxxxxxxx/sub-c-xxxxxxxxxxxxxxxxxxxx/クライアントID \
-m '{"content":"Hello!!! from MQTT!"}'
所感
subscribe側は一度実行したら実行しっぱなしというのが多いと思うので、npxでも良さそうだけど、publish側は確認で何回も実行すると思うのでnpxでの実行だと毎回インストールされてだるいかもしれませんね。
npm i -g mqtt
でグルーバルインストールしてしまってもよいかもしれません。
追記: 同じタイミングで記事書いてくれてたという笑
@youtoyさんも記事を書かれていたので、リンクを掲載します。
やばい、うける / グローバルインストールせずにMQTTをCLIで試す https://t.co/DG5KSgqpXD
— 菅原のびすけ (@n0bisuke) September 23, 2020
同じタイミングで......わろ