mosquito 是一个MQTT 服务器。MQTT协议可用来做Android消息推送,服务器端采用mosquito+PhpMQTTClient(这个php用来做实验)
自己不会java,不会Android开发,推送的开发部分是同事做的。使用情况表明,单台服务器能满足几万的稳定的连接数,扩展起来也不难,加机器即可。
下载最新版的mosquitto
cd /usr/local/src
wget http://mosquitto.org/files/source/mosquitto-1.1.2.tar.gz
tar zxvf mosquitto-1.1.2.tar.gz
cd mosquitto-1.1.2
如果当前openssl版本低于1.0,修改config.mk中的WITH_TLS_PSK:=no
make
make install prefix=/usr/local/mosquitto
为方便管理,添加下面至/etc/profile
export PATH=”$PATH:/usr/local/mosquitto/bin”
export PATH=”$PATH:/usr/local/mosquitto/sbin”
source /etc/profile
[root@mysql230 mosquitto]# mosquitto #tab补全,四个命令
mosquitto mosquitto_passwd mosquitto_pub mosquitto_sub
mosquitto服务器主程序,实现了MQTT协议
mosquitto_pub mosquitto发布消息的命令行程序
mosquitto_sub mosquitto订阅消息的命令行程序
默认的配置文件在 /etc/mosquitto/里
将/usr/local/mosquitto/lib/添加至/etc/ld.so.conf
执行 ldconfig -f /etc/ld.so.conf 可能需要等待数秒
启动
mosquitto (-d后台启动)
可能提示没有用户 mosquitto,useradd mosquitto
终端测试
客户端 mosquitto_sub -h 192.168.1.230 -t test
另起命令行mosquitto_pub -t test -m ’123′
PhpMQTTClient安装
去https://github.com/tokudu/PhpMQTTClient 下载程序包,放置到服务器目录
可能需要结合实际情况,要修改的地方
index.php
$result = $conn->connect(SAM_MQTT, array(‘SAM_HOST’ => ’127.0.0.1′, ‘SAM_PORT’ => 1883));
SAM/MQTT/sam_mqtt.php
$this->port = 1883;
启动mosquitto在前台运行,以方便获取连接客户端的信息
mosquitto
在服务器另外一终端上启动订阅消息的进程,订阅所有tokudu开头topic
mosquitto_sub –t tokudu /+
注意,此处之所以要使用tokudu,可以看index.php的182行 var target = ‘tokudu/’ + $(‘#messageTarget’).val();
在mosquitto的终端获得mosquitto_sub客户端