ブラウザからPaho(MQTTクライアント)を試す
丹内です。
何かと話題のMQTTですが、今回はブラウザから気軽に使ってみます。
ライブラリはPahoを使います。
ブローカーには、test.mosquitto.orgを使います。
準備
公式ページのインストール方法だとmvnでビルドしてcpという一手間がかかるので、必要となるライブラリを直接コピペするのがオススメです。
このスクリプトをrailsアプリのapp/assets/javascripts/以下に置きます。
ブラウザからはMQTT3.1 over WebSocketを使うことになるので、mqttws31.jsというファイル名が良いと思います。
それと、publishするクライアントとして使うので、mosquittoをインストールしましょう。
$ brew install mosquitto
使ってみる
railsアプリを起動しブラウザでlocalhost:3000にアクセスします。
Chromeのjavascriptコンソールから、以下のように使ってみます。
client = new Paho.MQTT.Client("test.mosquitto.org", 8080, "/", "12345") #=> P…o.M…T.Client {}_getClientId: () {...} client.connect({onSuccess:function(){console.log("success")}, onFailure:function(){console.log("fail")}}) #=> undefined #=> success <---- 接続に成功したら出力されます client.subscribe('testtopic/a',{onSuccess:function(){console.log("success")}, onFailure:function(){console.log("fail")}}) #=> undefined #=> success <---- 購読に成功したら出力されます client.onMessageArrived = function(message){console.log(message.payloadString)} #=> function client.onMessageArrived(message)
これで接続とsubscribeできたので、コマンドラインからpublishしてみます。
$ mosquitto_pub -h test.mosquitto.org -p 1883 -t testtopic/a -m hello -q 0 -d Client mosqpub/38372-HL00096.l sending CONNECT Client mosqpub/38372-HL00096.l received CONNACK Client mosqpub/38372-HL00096.l sending PUBLISH (d0, q0, r0, m1, 'testtopic/a', ... (8 bytes)) Client mosqpub/38372-HL00096.l sending DISCONNECT
すると、ブラウザにはメッセージが表示されます。
また、接続状態を維持すると、以下のようにHeartbeatのやりとりをしていることがわかります。
まとめ
ライブラリやMQTTの概要、MQTT over Websocketなどが分かれば、かなり簡単にMQTTを応用できそうです。
ハードウェアを強く意識したプロトコルですが、まずはブラウザから使ってみるのが手軽で良いと思います。
参考URL
JsDoc Reference - Paho.MQTT.Client Paho Javascript Client sangoの使い方 - JavaScript WebSocket 編 The Mosquitto MQTT broker gets Websockets support