Comment utiliser PHP et MQTT pour ajouter la fonction d'interaction en temps réel avec les clients au site Web
Avec le développement rapide d'Internet, l'interactivité du site Web est également devenue un élément important de l'expérience utilisateur. Afin d'obtenir une interaction en temps réel avec les clients, le modèle traditionnel de réponse aux demandes de pages Web ne peut plus répondre aux besoins. MQTT (Message Queuing Telemetry Transport), en tant que protocole léger de publication/abonnement, fournit une solution de communication en temps réel. Cet article explique comment utiliser PHP et MQTT pour ajouter une interaction en temps réel avec les clients sur le site Web.
Tout d'abord, nous devons construire le serveur MQTT. Les serveurs MQTT couramment utilisés incluent Mosquitto, EMQX, etc. En prenant Mosquitto comme exemple, vous pouvez l'installer via la commande suivante dans un système Linux :
sudo apt-get update sudo apt-get install mosquitto sudo apt-get install mosquitto-clients
Une fois l'installation terminée, vous pouvez démarrer le serveur MQTT et créer un sujet nommé "testtopic" pour nos exemples de code suivants.
PHP n'a pas de prise en charge MQTT intégrée Avant d'utiliser PHP pour les opérations MQTT, vous devez installer la bibliothèque d'extensions PHP MQTT. Nous pouvons installer la bibliothèque d'extensions en suivant les étapes suivantes :
git clone https://github.com/bluerhinos/phpMQTT.git cd phpMQTT phpize ./configure make sudo make install
Une fois l'installation terminée, ajoutez la ligne suivante dans le fichier php.ini :
extension=php_mosquitto.so
Ensuite, redémarrez le service PHP pour qu'il prenne effet.
Dans le code PHP, nous devons d'abord nous connecter au serveur MQTT. L'exemple de code est le suivant :
<?php $host = "localhost"; // MQTT服务器地址 $port = 1883; // MQTT服务器端口 $clientId = "client1"; // 客户端ID $client = new MosquittoClient($clientId); $client->connect($host, $port, 60); ?>
Avant de nous connecter au serveur, nous devons présenter la bibliothèque MQTT et définir l'adresse, le port et l'ID client du serveur MQTT. Grâce à la méthode connect
, nous pouvons établir une connexion avec le serveur MQTT. connect
方法,我们可以与MQTT服务器建立连接。
在MQTT中,订阅主题是实现发布/订阅模式的核心操作。我们可以使用MQTT客户端订阅感兴趣的主题。示例代码如下:
<?php $topic = "testtopic"; // 订阅的主题 $client->subscribe($topic, 1); ?>
通过subscribe
方法,我们可以订阅指定的主题。第一个参数为要订阅的主题,第二个参数表示订阅的QoS(服务质量)级别,一般可设置为1。
通过订阅主题后,我们可以接收来自MQTT服务器的消息。示例代码如下:
<?php $client->onMessage(function ($message) { $topic = $message->topic; $payload = $message->payload; // 处理接收到的消息 // ... // 返回响应给客户端 // ... }); $client->loopForever(); ?>
在onMessage
方法内,我们可以对接收到的消息进行处理,并针对不同的消息类型执行对应的操作。然后,我们可以返回响应给客户端。
除了接收消息,我们还可以使用MQTT客户端来发布消息。示例代码如下:
<?php $topic = "testtopic"; // 发布的主题 $payload = "Hello, world!"; // 发布的消息内容 $client->publish($topic, $payload, 1, false); ?>
通过publish
方法,我们可以发布指定的消息。第一个参数为发布的主题,第二个参数为发布的消息内容,第三个参数表示消息的QoS级别,第四个参数表示是否保留消息。
在我们不再需要MQTT连接时,需要及时断开连接。示例代码如下:
<?php $client->disconnect(); unset($client); ?>
通过disconnect
subscribe
, nous pouvons nous abonner au sujet spécifié. Le premier paramètre est le thème auquel souscrire, et le deuxième paramètre indique le niveau de QoS (Qualité de Service) de l'abonnement, qui peut généralement être fixé à 1. 🎜onMessage
, nous pouvons traiter le message reçu et effectuer les opérations correspondantes pour différents types de messages. Nous pouvons alors renvoyer la réponse au client. 🎜publish
, nous pouvons publier le message spécifié. Le premier paramètre est le sujet publié, le deuxième paramètre est le contenu du message publié, le troisième paramètre indique le niveau de QoS du message et le quatrième paramètre indique s'il faut conserver le message. 🎜disconnect
, nous pouvons nous déconnecter du serveur MQTT et libérer des ressources. 🎜🎜Avec les 7 étapes ci-dessus, nous pouvons utiliser PHP et MQTT pour ajouter une interaction en temps réel avec les clients sur le site Web. En nous abonnant à des sujets et en publiant des messages, nous pouvons facilement réaliser une communication en temps réel, ajoutant de l'interactivité et du temps réel au site Web. J'espère que cet article vous aidera ! 🎜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!