Maison > Article > développement back-end > Abonnement aux messages MQTT et pratique de publication dans le développement PHP
Abonnement et publication pratiques de messages MQTT dans le développement PHP
Introduction :
Avec le développement de l'Internet des objets, le protocole de transport de télémétrie Message Queuing (MQTT) joue un rôle important dans la communication entre les capteurs et les applications back-end. En tant que protocole léger, MQTT présente les caractéristiques d’une faible consommation d’énergie, d’une fiabilité et d’une évolutivité élevées. Dans le développement PHP, MQTT est utilisé pour s'abonner et publier des messages, qui peuvent facilement communiquer avec des capteurs et transmettre des données à l'application back-end pour traitement et affichage. Cet article présentera l'application pratique de MQTT dans le développement PHP et fournira des exemples de code pertinents.
1. Introduction à MQTT :
MQTT est un protocole de transmission de file d'attente de messages basé sur le modèle de publication/abonnement. Il adopte un format de message binaire léger et convient à divers périphériques matériels tels que des capteurs et des systèmes embarqués. Le protocole MQTT contient principalement deux rôles : éditeur de message et abonné au message. Les éditeurs publient des messages sur un sujet spécifique, tandis que les abonnés s'abonnent à des sujets d'intérêt pour recevoir des messages pertinents. Le protocole MQTT prend également en charge les paramètres de niveau QoS (Qualité de service) des messages pour garantir la fiabilité des données.
2. Installer le serveur MQTT :
Avant de commencer à pratiquer MQTT dans le développement PHP, nous devons d'abord créer un serveur MQTT. Voici les brèves étapes pour configurer un serveur MQTT :
3. Utilisation de MQTT en PHP :
Le processus d'utilisation de MQTT pour l'abonnement et la publication de messages en PHP est le suivant :
Présentation de la bibliothèque client MQTT :
Vous devez d'abord présenter la bibliothèque client MQTT, la bibliothèque client la plus courante. client MQTT utilisé en PHP Les bibliothèques de terminaux incluent phpMQTT et mosquitto-php, etc. Cet article prend comme exemple phpMQTT, qui peut être installé via composer :
composer require bluerhinos/phpmqttclient
Configuration du client MQTT :
Avant d'effectuer des opérations MQTT dans le code PHP, vous devez d'abord configurer la connexion, y compris l'adresse du serveur, le numéro de port et le niveau de QoS. , etc. Voici un exemple de configuration :
$mqttServer = 'localhost'; // MQTT服务器地址 $mqttPort = 1883; // MQTT服务器端口 $mqttClientId = 'php_script'; // 客户端ID $mqttUsername = ''; //用户名 $mqttPassword = ''; // 密码
Abonnement aux messages MQTT :
Pour vous abonner à un sujet en PHP, vous pouvez utiliser la méthode subscribe
. Voici un exemple : subscribe
方法。以下是一个示例:
require('phpMQTT.php'); $mqtt = new phpMQTT($mqttServer, $mqttPort, $mqttClientId); if($mqtt->connect(true, NULL, $mqttUsername, $mqttPassword)) { $topics['topic_name'] = array('qos' => 0, 'function' => 'dataCallback'); $mqtt->subscribe($topics, 0); while($mqtt->proc()){ } $mqtt->close(); } else { echo "连接MQTT服务器失败!"; exit(1); } function dataCallback($topic, $payload) { echo "收到消息:$payload"; }
MQTT消息的发布:
在PHP中发布一个消息,可以使用publish
方法。以下是一个示例:
require('phpMQTT.php'); $mqtt = new phpMQTT($mqttServer, $mqttPort, $mqttClientId); if($mqtt->connect(true, NULL, $mqttUsername, $mqttPassword)) { $mqtt->publish('topic_name', '消息内容', 0); $mqtt->close(); } else { echo "连接MQTT服务器失败!"; exit(1); }
四、实战应用:
下面以一个简单的实景应用为例,演示在PHP中使用MQTT进行消息订阅与发布的实际应用。
temperature
require('phpMQTT.php'); $mqttServer = 'localhost'; // MQTT服务器地址 $mqttPort = 1883; // MQTT服务器端口 $mqttClientId = 'php_script'; // 客户端ID $mqtt = new phpMQTT($mqttServer, $mqttPort, $mqttClientId); if($mqtt->connect(true, NULL, NULL, NULL)) { $topics['temperature'] = array('qos' => 0, 'function' => 'temperatureCallback'); $mqtt->subscribe($topics, 0); echo "开始订阅温度数据... "; while($mqtt->proc()){ } $mqtt->close(); } else { echo "连接MQTT服务器失败!"; exit(1); } function temperatureCallback($topic, $payload) { echo "收到温度消息:$payload "; // 在这里进行温度数据的处理,如存储到数据库或展示在Web界面上 }
publish
. Voici un exemple : <!DOCTYPE html> <html> <head> <title>温度监控</title> </head> <body> <h1>温度监控</h1> <div id="temperature"></div> <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> <script> $(document).ready(function() { var mqttServer = 'mqtt://localhost:1883'; var clientId = 'web_client'; var temperatureTopic = 'temperature'; var client = mqtt.connect(mqttServer, { clientId: clientId }); client.on('connect', function() { client.subscribe(temperatureTopic); }); client.on('message', function(topic, message) { if (topic === temperatureTopic) { var temperature = message.toString(); $('#temperature').text('当前温度:' + temperature + '℃'); } }); }); </script> </body> </html>
Supposons que nous ayons un capteur de température qui publie la température en temps réel via le protocole MQTT sur un canal avec le sujet température
. Notre application PHP doit recevoir et traiter ces données de température en temps réel, et pour ce faire, nous nous abonnerons à ce sujet et afficherons la température en temps réel via l'interface web.
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!