centos MQTT安装和php使用mosquitto的实例
MQTT 是物联网的消息传送协议标准。
在 CentOS 7上常用的开源 MQTT 消息服务器就是 Mosquitto
有人用 PECL 来安装 Mosquitto 的 PHP 实现,反正我没有成功
pecl install Mosquitto-alpha
也可以用yum安装
yum install mosquitto mosquitto-devel
如果安装不成功就用编译安装
包下载地址:https://github.com/mgdm/Mosquitto-PHP
phpize ./configure && make && make install
php.ini 添加 extension=mosquitto.so
service mosquitto start 查看:systemctl status mosquitto.service 启动:systemctl start mosquitto.service 重启:systemctl restart mosquitto.service 自启:systemctl enable mosquitto.service
# 当前终端运行订阅测试
mosquitto_sub -t test1
# 另起一个终端运行发布测试,输入下面命令在订阅终端窗口可以看到Hello
mosquitto_pub -t test1 -m Hello
关闭匿名登录,客户端登录需要用用户名,为了数据安全,这步也是必须要做的
# 到mosquitoo配置目录
cd /etc/mosquitto
# 修改配置
vim ./mosquitto.conf
# 输入 '/' 表示搜索,输入 allow_anonymous 查找到配置项,修改为false
allow_anonymous false
具体配置如下
allow_anonymous false
password_file /etc/mosquitto/pwfile.txt
命令行输入
mosquitto_passwd -c /etc/mosquitto/pwfile.txt root
# 接下来连续输入两次密码即可
service mosquitto start systemctl restart mosquitto.service
# 当前终端运行订阅测试
mosquitto_sub -t test -u root -P 密码
# 另起一个终端运行发布测试
mosquitto_pub -u root -P 密码 -t test -m Welcome
重启php
mqtt.php
<?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',1883,50); $c->subscribe('ss', 1); $c->onMessage(function($m) { var_dump($m); }); $c->loopForever();