安装的为mosquitto-1.6.7
cd /usr/local/
# 下载源代码包
wget http://mosquitto.org/files/source/mosquitto-1.6.7.tar.gz
# 解压
tar zxfv mosquitto-1.6.7.tar.gz
mv mosquitto-1.6.7 mosquitto
# 进入目录
cd mosquitto
# 编译 安装
make && make install
可以看到最后几行,说明在/etc/下创建了配置文件和密码文件,后面可以使用,也可以就使用mosquitto/当前目录下的配置
install -m 644 mosquitto.conf "/etc/mosquitto/mosquitto.conf.example"
install -m 644 aclfile.example "/etc/mosquitto/aclfile.example"
install -m 644 pwfile.example "/etc/mosquitto/pwfile.example"
install -m 644 pskfile.example "/etc/mosquitto/pskfile.example"
配置
复制一份新的密码文件
cp pwfile.example pwfile
修改配置文件
vi mosquitto.conf
allow_anonymous false #必须使用密码 搜索allow_anonymous 去掉前面#号
password_file /usr/local/mosquitto/pwfile #密码文件 搜索 password_file
user root # user mosquitto 权限
port 1884 # Port to use for the default listener. 端口
:wq
生成密码
cd src
./mosquitto_passwd -c /usr/local/mosquitto/pwfile user_name
连续输入两次没密码
可以发现之前pwfile里面有了内容
./mosquitto -d -c ../mosquitto.conf
查看是否开启
ps -aux | grep mosquitto
whereis mosquitto_sub
cd /usr/local/bin
./mosquitto_sub -h 127.0.0.1 -u root -P 12345 -p 1884 -v -t uid_login
订阅如果遇到报错
./mosquitto_sub: error while loading shared libraries: libmosquitto.so.1: cannot open shared object file: No such file or directory
解决办法
ln -s /usr/local/lib/libmosquitto.so.1 /usr/lib/libmosquitto.so.1
更新动态链接库 ldconfig
重新开个窗口
./mosquitto_pub -h 127.0.0.1 -u root -P 12345 -p 1884 -t uid_login -m 12
之前订阅的窗口收到信息说明成功
./mosquitto -d -c ../mosquitto.conf
ps -aux | grep mosquitto
whereis mosquitto_sub
yum install -y php-devel
安装后要恢复
<?php
$client = new Mosquitto\Client();
$client->setCredentials('root','12345');
$client->connect("127.0.0.1", 1884, 5);
for($i = 0;$i<=100;$i++) {
$client->loop();
$mid = $client->publish('ss', "Hello from PHP at " . date('Y-m-d H:i:s'), 1, 0);
echo "Sent message ID: {$mid}\n";
$client->loop();
sleep(2);
}
sub.php
<?php
$c = new Mosquitto\Client;
$c->setCredentials('root','12345');
$c->connect('127.0.0.1',1884,50);
$c->subscribe('ss', 1);
$c->onMessage(function($m) {
var_dump($m);
});
$c->loopForever();