一、libwebsockets和mosquitto编译安装配置
centos7下
因为要把物联网状态数据实时显示在web上,所以把平台的数据按照规则做个出站转发给支持websockets的MQTT服务器
mosquitto默认不支持websockets,所以需要自己手动编译一套
需要安装各类支持库,libwebsockets需要手动编译一下
yum install gcc gcc-c++ openssl-devel c-ares-devel libuuid-devel
git clone https://github.com/warmcat/libwebsockets.git
下载完成后
cd libwebsockets
mkdir build
cd build
cmake ..
make
sudo make install
git clone https://github.com/eclipse/mosquitto.git
vim config.mk
将WITH_WEBSOCKETS=no 改成 yes
make
make install
接下来修改配置文件
cp /etc/mosquitto/mosquitto.conf.example /etc/mosquitto/mosquitto.conf
vim /etc/mosquitto/mosquitto.conf
修改
port 1883
listener 9001
protocol websockets
然后启动即可
mosquitto -c /etc/mosquitto/mosquitto.conf
后台运行
mosquitto -c /etc/mosquitto/mosquitto.conf -d
启动并查看调试
mosquitto -c /etc/mosquitto/mosquitto.conf -v
二、配置MQTT服务器桥接
这个功能主要是在MQTT服务器之间做消息的topic转换传递。
因为桥接是mosquitto服务的一部分功能,所以上边的配置不用动,修改/etc/mosquitto/mosquitto.conf的Bridges部分即可
#log_type all
connection bridge-1
address 192.168.1.40:1883
topic input/jsonp both 0 xinti/ sw/zhongti/
topic input/json both 0 xinti/ sw/zhongti/
topic command/# both 0 xinti/ sw/zhongti/
#bridge_attempt_unsubscribe true
#notifications false
clientid 1_6
cleansession true
大概解释一下这个配置的大概意思
connection bridge-1 bridge-名称,自己随便起
address 192.168.1.40:1883是另外一MQTT服务器的地址和端口
topic input/jsonp both 0 xinti/ sw/zhongti/ 对本地topic:xinti/input/jsonp 和192.168.1.40的topic:sw/zhongti//input/jsonp做个相互转换。
即本地接收的主题为xinti/input/jsonp的消息会被本地MQTT服务器自动以sw/zhongti//input/jsonp主题发布给192.168.1.40;
从192.168.1.40订阅的主题为sw/zhongti//input/jsonp的消息会被本地以xinti/input/jsonp为主题发布给本地MQTT服务器。
当然你也可以设置connection bridge-2、connection bridge-3实现多个MQTT服务器之间的桥接
可以使用通配符,完全转发使用topic # both 0 “” “”