2016/1/10追記
これだけではmosquitto.confでwebsocketsを使用する際にエラーが出ます。調査中。
mosquittoの構築
ソースコードの入手
2015/1/6時点では1.4.7がありました。
$ wget http://mosquitto.org/files/source/mosquitto-1.4.7.tar.gz
$ tar -xvzf mosquitto-1.4.7.tar.gz
websocketsを有効にする
websocketsを有効にしたかったのでconfig.mkの以下の行を変更
# Build with websockets support on the broker.
#WITH_WEBSOCKETS:=no
WITH_WEBSOCKETS:=yes
make
make時にcmakeが必要になるのでapt-getしておきます。準備できたらおもむろにmakeします。
$ cmake .
$ make all
$ sudo make install
不足しているライブラリ
足りないライブラリが出てくるので地道にインストール。
例えばコンパイル時に以下のエラーが出てきたら
mosquitto.c:46:29: fatal error: libwebsockets.h: そのようなファイルやディレクトリはありません
# include <libwebsockets.h>
^
apt-cacheコマンドで地道に探す。
$ apt-cache search websockets
(略)
libqt5websockets5 - Qt 5 Web Sockets module
libqt5websockets5-dev - Qt 5 Web Sockets module - development files
libwebsocketpp-dev - C++/Boost Asio based websocket client/server library. Dev package
(略)
あたりをつけて
$ sudo apt-get install libwebsockets-dev
結局apt-get installしたのは以下のとおり。
- libwebsockets-dev
- uuid-dev
動作確認
まずブローカを動かします。
$ mosquitto -v
1452117847: mosquitto version 1.4.7 (build date 2016-01-07 06:57:15+0900) starting
1452117847: Using default config.
1452117847: Opening ipv4 listen socket on port 1883.
1452117847: Opening ipv6 listen socket on port 1883.
別のターミナルからメッセージをpubします。
$ mosquitto_pub -h localhost -p 1883 -t hello -m world
そうするとブローカーが動作しているターミナルに出てきます。
1452118052: New connection from ::1 on port 1883.
1452118052: New client connected from ::1 as mosqpub/2577-raspberryp (c1, k60).
1452118052: Sending CONNACK to mosqpub/2577-raspberryp (0, 0)
1452118052: Received PUBLISH from mosqpub/2577-raspberryp (d0, q0, r0, m0, 'hello', ... (5 bytes))
1452118052: Received DISCONNECT from mosqpub/2577-raspberryp
1452118052: Client mosqpub/2577-raspberryp disconnected.
ローカル環境下ですがちゃんと動いています。