之前使用IBM的Mqtt协议实现RSMB因为非开源,不能在不同硬件架构上使用,后来找到另一个实现-mosquitto(mos:蚊子?官网上的LOGO就是一只蚊子--!)。
编译环境:ubuntu10.04
下载源码包后解压直接make,结果提示需要openssl,重新编译openssl后再make即可。如果不想使用openssl则载Makefile中去掉openssl的支持即可。
编译后主要程序和库:
1、mosquitto :消息推送服务主程序;
2、libmosquitto.so.1:程序库;
3、mosquitto_pub:发布端测试程序;
4、mosquitto_sub:订阅端服务程序;
5、mosquitto.conf:配置文件;
*直接make install后,程序库默认不载/lib下,需要链接至此,否则测试程序提示库找不到。
测试:
一、开起第一个终端窗口,直接运行mosquitto即可:
1354890081: mosquitto version 1.0.5 (build date 2012-12-07 22:01:34+0800) starting
1354890081: Opening ipv4 listen socket on port 1883.
1354890081: Opening ipv6 listen socket on port 1883.
二、开启另一个终端窗口,运行订阅程序mosquitto_sub:
注意:消息推送的发布和订阅要有主题,选项[-t] 主题,即:
mosquitto_sub -t 主题1
如需指定用户名称则加选项[-i] 用户名,即:
mosquitto_sub -t 主题1 -i 订阅端
三、开启第三个终端窗口,运行发布端程序mosquitto_pub:
指定消息推送的主题,发布端用户名和消息:
mosquitto_pub -t 主题1 -i 发布端 -m 你好
*注意:如果消息中间有空格则消息要已单引号括起来。
mosquitto_pub -t 主题1 -i 发布端 -m '我是发布端,你好。'