LoginSignup
4
8

More than 5 years have passed since last update.

MQTTを動かして学ぶ

Last updated at Posted at 2016-05-12

MQTTとはなんぞや、という自分が実際に動かしながら学んだ方法です。
オプション的(retain,qos等)なものは一切削いでシンプルに。
基本sampleコードをベースに、改造しながらMilkcocoaとの連携まで実施しました。

MQTTとは

MQTT(Message Queue Telemetry Transport)は1999年にIBM社と Eurotech社のメンバーにより考案されたプロトコルで、2014年8⽉現在 における最新のバージョンはMQTT3.1.1です。現在、コンピュータと通 信に関する標準化団体であるOASISによって、MQTTの標準化が進められています。 https://sango.shiguredo.jp/mqtt

  • 軽量・省電⼒なプロトコル
  • 低速・不安定なネットワークでの利⽤を想定

sample code

まずは、mqttのサイトにもあるサンプルコードを手元で動かしてみる。

sample.js

コードはこちら
mqtt_samples/sample.js

node sample.js

すると

Hello mqtt

こんなレスポンスが返ってきます。
これが、どういう状態か。図がこちら。
スクリーンショット_2016-05-12_16_45_55.png

このように、自身(PC)がpubして自身(PC)でsubして(受けて)いるので、ちょっと分かりにくいです。
なので、このsample.jsを少し改変します。

publishとsubscribeでプログラムを分ける

publishとsubscribeでプログラムを分けてみました。

pub_test.js
https://github.com/papettoTV/mqtt_samples/blob/master/pub_test.js

sub_test.js
https://github.com/papettoTV/mqtt_samples/blob/master/sub_test.js

これらの実行はコツが必要で、先にsub_test.jsを実行し、直後に別プロセスでpub_test.jsを実行します。

node sub_test.js

これを実行すると、待ちの状態になります。
で、直後に別ターミナルで、

node pub_test.js

を叩くと、sub_test.js側に以下の様な出力がでます。

Hello mac

これの概要図がこちら
スクリーンショット 2016-05-12 16.48.17.png
処理フローは
* sub_test.jsを実行し、brokerにpresenceというトピックを登録
* pub_test.jsで、presenceトピックに対してHello macという情報を投げる
* brokerが、同トピックで待ってるsubscriber(sub_test.jsの実行者)に対して、Hello macを投げる、という動きになります。

これで、publisher、subscriberの関係の理解が深まりました。
もっと現実的にするなら、このpubとsubを別端末で実施するといいかもしれません。

brokerを変えてみる

sampleコード内で、以下の部分は、brokerサーバを指定しています。

var client  = mqtt.connect('mqtt://test.mosquitto.org');

このtest.mosquitto.orgはオープンソースなbrokerサーバですね。
なので、これを試しに別brokerサービスに変えてみます。

Milkcocoa

Milkcocoaというリアルタイムなサービス向けBaaSがありますが、こちらはbrokerとしての機能も備えていますので、これに置き換えてみます。

それがこちら
milkcocoa_pub_sample.js
コード内のapp_idはMilkcocoaに登録して取得したものを書きます。
publisher側のコードなので、pub_test.jsと比べて、基本的には、mqtt.connect()内のパラメータが変わっただけです。

動作イメージはこちら
スクリーンショット 2016-05-12 16.53.07.png

※subscribe側もsub_test.jsで、mqtt.connectを変えれば同じです。

結果は同じなので省略しますが、これで、publisher、subscriber、brokerの関係が理解できました。

参考

社内で使った資料

4
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
8