Ce qui suit est une introduction à thinkphp utilisant mqtt à partir de la colonne du didacticiel du framework thinkphp. J'espère que cela sera utile aux amis dans le besoin !
Récemment, je travaillais sur un projet utilisant mqtt. J'ai vu de nombreux exemples sur Internet mais je ne parvenais pas à les comprendre (probablement parce que je suis stupide). Mais je l'ai résolu plus tard et je l'ai enregistré ici. pour ne pas l'oublier car je ne suis pas très compétent, si vous voyez des erreurs d'écriture, vous pouvez laisser un message pour conseil
La première préparation est l'environnement et le framework Vous pouvez également utiliser le natif. un, c'est presque pareil
Environnement J'utilise contOs7 et je l'ai installé Le tutoriel d'installation de mqtt utilisé dans l'environnement mosquitto est ici (pensez à définir le mot de passe, les autorisations n'ont pas encore été faites, donc cet article a pas été écrit)
Framework J'utilise le framework TP5.0
Connect Voici le processus de développement
1 Téléchargez la classe MQTT et placez-la dans le dossier d'extension dans le répertoire racine du projet, je voulais à l'origine le mettre dans les ressources csdn afin que tout le monde puisse gagner 1 point pour son travail acharné. De manière inattendue, la valeur par défaut est de 5 points. Si vous êtes trop paresseux pour accéder à Git et que vous avez trop de points, veuillez cliquer sur l'adresse de la ressource et donner à chacun l'adresse Git : https://github.com/bluerhinos. /phpMQTT,
2 Ensuite, présentation de la classe MQtt
Vient ensuite le bloc de code pour la publication et l'abonnement Concernant le niveau Qos des informations MQTT, si vous êtes intéressé, vous pouvez le rechercher
.<?php namespace app\index\model; use Bluerhinos\phpMQTT; use think\Model; class Mqtt extends Model { /** * MQTT发送信息 * @param $id 发布消息的ID 订阅ID需要与发布ID一致才能接受信息 topic为发布给全部 * @param $info 发布的信息 */ public function pus($id,$info){ //使用require_once 引入 MQTT 的类 require_once (EXTEND_PATH.'/phpMQTT-master/phpMQTT.php'); $host = ""; // change if necessary IP $port = 1883; // change if necessary 端口默认1883 $username = ""; // set your username 用户名 $password = ""; // set your password 密码 $message = $info; //要发送的消息 //phpMQTT有四个参数:主机,端口,客户端id,证书。官网这里的案例没写证书,请参考phpMQT类 //没有证书的时候只能连接1883端口,不能连接8883端口。 //第三个参数为客户端ID 不可重复 $mqtt = new phpMQTT($host, $port, "ClientID" . rand()); //连接 if ($mqtt->connect(true, NULL, $username, $password)) { //发送信息 第三个参数为Qos服务质量等级 //Qos0 发送者只发送一次消息,不进行重试,Broker不会返回确认消息。在Qos0情况下,Broker可能没有接受到消息 //Qos1 发送者最少发送一次消息,确保消息到达Broker,Broker需要返回确认消息PUBACK。在Qos1情况下,Broker可能接受到重复消息 //Qos2 Qos2使用两阶段确认来保证消息的不丢失和不重复。在Qos2情况下,Broker肯定会收到消息,且只收到一次 $mqtt->publish($id, $message, 0); $mqtt->close(); //关闭 } else { echo "Fail or time out<br />"; } } /** * 要使用命令行运行此方法!!! * think5.0 运行方法为 cd到Public 目录 然后 php index.php 模块/控制器/方法 * 该类主要为订阅,建议订阅代码和发布代码不要写在同一个类中,避免修改造成不必要的误改。 * 每次更新该类后需要重启mqtt订阅,否则新的改动不会生效。 * 请在相应的位置放入phpMQTT的库 * 库代码:https://github.com/bluerhinos/phpMQTT/blob/master/phpMQTT.php * 类库使用的时候注意命名空间,类名称命名要和thinkphp的保持一致,不然会报错 */ public function sub(){ require_once (EXTEND_PATH.'/phpMQTT-master/phpMQTT.php'); $server = ""; // change if necessary 服务器IP $port = 1883; // change if necessary 端口 一般是1883 $username = ""; // set your username mosquitto设置的用户名 $password = ""; // set your password mosquitto设置的密码 $client_id = "clientx9293670xxctr".rand(1213333123,123123333); //你的连接客户端id $mqtt = new phpMQTT($server, $port, $client_id); //进行连接 if(!$mqtt->connect(true, NULL, $username, $password)) { exit('error'); //连接失败 } else { echo "success"; //连接成功 } //topics["topic"] 为接受的主题名 需要和发送的主题名一致 否则会订阅不到 //订阅信息 Qos为信息登记,需要和发送的等级一致 $topics["topic"] = array("qos" => 0, "function" =>array($this,"onMessage")); $mqtt->subscribe($topics, 0); //死循环监听 while($mqtt->proc()){ } $mqtt->close(); } /** * 在此处接MQtt的信息 进行业务处理 * @param $topic * @param $msg */ function onMessage($topic,$msg){ $msg = json_decode($msg,true); //我把数据传递到了另一个方法进行处理 可以在处理完逻辑业务之后 再次调用发布方法 去给订阅方发布消息 $this->index($msg); } }
après l'exécution, renvoyez le succès Si vous souhaitez tester, vous pouvez utiliser l'adresse du logiciel mqtt.fx est http://www.jensd.de/apps/mqttfx/ J'utilise après 1.7.1. en cliquant dessus, il y a un lien Windows ci-dessous et cliquez pour télécharger. Si vous souhaitez l'utiliser
La configuration utilise
pour ouvrir le logiciel
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!