良いあそなすちゃん

良い方のあそなすちゃんです!

Paho.jsを使ってWebsocket経由でCloudMQTT

MQTTいい感じだったので適当に触ってみた。
ウェッブアプリケーション開発に慣れているのでとりあえず雑にJavaScriptから触ってみようってことで、CloudMQTTでインスタンスを立ち上げてのドキュメントのサンプルコードを読んでいた。

Documentation - Websocket - CloudMQTT

なんか微妙に使いづらくて、例えば複数のトピックを一度に購読したい場合になんかぐんにゃりしてしまうコードになりそうだったので、個人用途で最適になるように書き換えた。

gist.github.com

書き終わってからPusher.jsのことを思い出してsocketとchannel, bindみたいなAPIにすればよかったかもしれない。あと初期化の時にコールバック用の関数渡せばよかったかもしれないけど、見た目が微妙になりそうだったのでやめた。
あと、MQTT、Websocket経由でやる人あんまいないぽく(本来の用途的にはIoTとか?)てインターネッの情報が少なみということに気がついた。

コードから Rails 使ってんなってのがわかるかもしれないけど、Railsじゃなかったら npm にある mqtt をそのまま使えてMQTTと直接話しができるという手があったけど、頭の中にある機能を実装するのにNodeだけで手探りでやるのかなり時間が掛かりそうだったので、Railsを使った。Rails界隈 rails-assets.org とか browserifiy-rails とか見ていると、すげーなってなる。rails-assetsにおいては次の道が見つかるといいね。

またデバグのためにストリームに適当にデータを流し込む必要があるけど、例えばTwitterの検索結果とかが割りと便利(今回はPublisherはすでに別にある)で、最初は iPhone とか instagramを検索していたんだけど流量が激しすぎて雑な実装だと破滅したので、perfume あたりにしておくと1分に1回ぐらいで Tweet が適切な量が流れてきて便利だった。