PHP MQTT 实践
MQTT介绍:http://mqtt.org 服务器端 PHP客户端 MQTT QOS等级订阅和发布的关系 qos = 0:仅发一次,不管是否能收到 也就是服务器只会按pub和sub两者qos等级最小的那个qos规则来发送消息。 遇到的问题 1.? qos=2 一直没有测试成功,mosquitto 已经收到客户端的消息,但订阅端就是接收不到。 消息发布 <?php require("../phpMQTT.php"); $server = ‘127.0.0.1‘; // 服务器IP $port = 1883; // 服务器端口 $username = ‘‘; // 用户名 $password = ‘‘; // 密码 $client_id = ‘pub_‘ . uniqid(); $mqtt = new BluerhinosphpMQTT($server,$port,$client_id); if ($mqtt->connect(true,NULL,$username,$password)) { for ($i=0; $i<100; $i++) { $topic = ‘topic01‘; $msg = ‘Hello World! at (‘ . $i . ‘) ‘ . date(‘Y-m-d H:i:s‘); echo date(‘Y-m-d H:i:s‘) . ‘ SEND [‘ . $topic . ‘] ‘ . $msg . PHP_EOL; // qos = 0:仅发一次,不管是否能收到 // qos = 1:没返回一直发,可能有重复接收 // qos = 2:保证必须收到,并且不重复 $mqtt->publish($topic,$msg,0); usleep(100000); } $mqtt->close(); } else { echo "Time out!n"; } 消息订阅 <?php require("../phpMQTT.php"); $server = ‘127.0.0.1‘; // 服务器IP $port = 1883; // 服务器端口 $username = ‘‘; // 用户名 $password = ‘‘; // 密码 $client_id = ‘sub_‘ . uniqid(); $mqtt = new BluerhinosphpMQTT($server,$client_id); $mqtt->debug = true; if(!$mqtt->connect(true,$password)) { echo "连接失败!n"; exit(1); } // 订阅列表 $topics = [ ‘topic01‘ => [‘qos‘ => 0,‘function‘ => ‘procmsg‘], ]; $mqtt->subscribe($topics,0); while ($mqtt->proc()){} $mqtt->close(); // 消息处理函数 function procmsg($topic,$msg) { echo date(‘Y-m-d H:i:s‘) . ‘ [‘ . $topic . ‘] ‘ . $msg . PHP_EOL; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |