Méthode de mise en œuvre de combinaison de Swoole avec le protocole MQTT
Avec le développement de l'Internet des objets, de plus en plus d'applications nécessitent une transmission et une communication de données en temps réel. Message Queuing Transport Protocol (MQTT) est un protocole léger adapté aux petits appareils et aux environnements à faible bande passante, et est souvent utilisé pour la transmission de données dans les appareils IoT. En tant que cadre de communication réseau hautes performances, asynchrone et axé sur les événements, Swoole fournit une implémentation efficace du protocole TCP/UDP/UnixSocket et peut être utilisé conjointement avec le protocole MQTT pour fournir une communication système plus efficace.
Cet article présentera comment utiliser les protocoles Swoole et MQTT pour communiquer et fournira une solution réalisable.
Tout d'abord, nous devons comprendre les connaissances de base du protocole MQTT. Il s'agit d'un protocole basé sur un modèle de publication/abonnement qui permet une communication bidirectionnelle entre les appareils. Il y a deux rôles principaux dans le protocole MQTT : les éditeurs et les abonnés. Les éditeurs publient des messages sur des sujets et les abonnés peuvent s'abonner à des sujets d'intérêt et recevoir des messages publiés par les éditeurs en temps réel. Dans le protocole MQTT, un sujet est défini sous forme de chaîne comme identifiant pour la publication/l'abonnement.
Ensuite, nous combinerons le framework Swoole pour implémenter le modèle de publication/abonnement du protocole MQTT.
Avant d'utiliser Swoole pour implémenter le protocole MQTT, nous devons installer la bibliothèque MQTT. Swoole peut utiliser la bibliothèque php-mqtt pour la communication MQTT, et nous pouvons utiliser composer pour l'installer :
composer require bluerhinos/phpmqtt dev-master
Après une installation réussie, nous pouvons commencer à utiliser Swoole pour communiquer avec le protocole MQTT.
Tout d'abord, nous devons créer un serveur TCP basé sur le framework Swoole. Sur ce serveur TCP, nous utiliserons le protocole MQTT pour la transmission des données. Dans le framework Swoole, nous pouvons créer un serveur TCP via le code suivant :
$server = new SwooleServer('0.0.0.0', 9501, SWOOLE_PROCESS, SWOOLE_SOCK_TCP);
Ensuite, nous devons enregistrer le hook de service au démarrage du serveur afin que les demandes des clients puissent être traitées. Dans cet exemple, nous utiliserons les méthodes onConnect, onReceive et onClose :
$server->on('connect', function ($serv, $fd) { echo "Client: Connect. "; }); $server->on('receive', function ($serv, $fd, $from_id, $data) { echo "Receive Data: $data "; // 处理MQTT消息 }); $server->on('close', function ($serv, $fd) { echo "Client: Close. "; });
Lors de la réception d'une demande client, nous analyserons le message MQTT. Étant donné que cet article se concentre sur la façon d'utiliser Swoole pour implémenter le protocole MQTT, nous nous concentrons uniquement sur la façon d'analyser les messages MQTT. Les messages MQTT peuvent être facilement analysés à l'aide de la bibliothèque php-mqtt Nous pouvons l'encapsuler dans une méthode :
function handleMqttMessage($client_id, $topic, $message) { echo "Mqtt Message Received: "; echo "Client ID: $client_id "; echo "Topic: $topic "; echo "Message: $message "; }
Le travail restant consiste à envoyer les données analysées du message MQTT au client destinataire. Dans le protocole MQTT, nous pouvons communiquer en utilisant le mode publication/abonnement pour publier des messages sur des sujets spécifiés. Un client peut s'abonner à un sujet qui l'intéresse puis recevoir des messages publiés sur ce sujet. Dans le framework Swoole, nous pouvons utiliser swoole_server->task() pour envoyer des messages à des clients spécifiques.
Le code suivant permet d'envoyer le message à tous les clients abonnés au sujet correspondant après avoir reçu le message MQTT :
$server->on('receive', function ($serv, $fd, $from_id, $data) { $mqtt = new BluerhinosphpMQTT('localhost', 1883, 'Swoole_Server'); $mqtt->debug = false; if (!$mqtt->connect()) { exit(1); } $topics['topic_name'] = array('qos' => 0, 'function' => 'handleMqttMessage'); $mqtt->subscribe($topics, 0); while ($mqtt->proc()) { }; $mqtt->close(); echo "Receive Data: $data "; $data = json_decode($data, true); $message = $data['message']; $client_ids = $serv->getClientList(); foreach ($client_ids as $client_id) { $serv->task("$client_id:$message"); } });
Chaque fois qu'un message client est reçu, nous le ferons tous appelez la méthode de rappel handleMqttMessage() en fonction de la rubrique souscrite, puis envoyez le message au client spécifié.
Enfin, nous devons envoyer le message au client dans l'événement Task :
$server->on('task', function ($serv, $task_id, $from_id, $data) { $client_id = strstr($data, ':', true); $message = substr(strstr($data, ':'), 1); $serv->send($client_id, $message); });
Le code ci-dessus enverra le message au client et renverra une réponse après un envoi réussi Message ACK.
Résumé
Dans cet article, nous avons appris comment utiliser Swoole pour implémenter le protocole MQTT. De cette manière, nous pouvons parvenir à une communication efficace en temps réel et mieux gérer les demandes des clients en utilisant une approche asynchrone basée sur les événements. Le framework Swoole fournit une implémentation efficace du protocole TCP/UDP/UnixSocket, ce qui présente de nombreux avantages tant pour les grandes entreprises que pour les petits projets. À l'avenir, nous pouvons nous attendre à ce que davantage d'applications utilisent les protocoles Swoole et MQTT pour le transfert de données et la communication.
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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

MQTT (MessageQueuingTelemetryTransport) est un protocole léger de transmission de messages couramment utilisé pour la communication entre les appareils IoT. PHP est un langage de programmation côté serveur couramment utilisé qui peut être utilisé pour développer des clients MQTT. Cet article présentera comment utiliser PHP pour développer un client MQTT et inclura le contenu suivant : Concepts de base du protocole MQTT Exemples de sélection et d'utilisation de la bibliothèque client PHPMQTT : Utilisation du client PHPMQTT pour publier et

L'utilisation des coroutines Swoole dans Laravel peut traiter un grand nombre de requêtes simultanément. Les avantages incluent : Traitement simultané : permet de traiter plusieurs requêtes en même temps. Hautes performances : Basé sur le mécanisme d’événements Linux epoll, il traite efficacement les requêtes. Faible consommation de ressources : nécessite moins de ressources serveur. Facile à intégrer : intégration transparente avec le framework Laravel, simple à utiliser.

Swoole et Workerman sont tous deux des frameworks de serveur PHP hautes performances. Connu pour son traitement asynchrone, ses excellentes performances et son évolutivité, Swoole convient aux projets qui doivent gérer un grand nombre de requêtes simultanées et un débit élevé. Workerman offre la flexibilité des modes asynchrone et synchrone, avec une API intuitive mieux adaptée à la facilité d'utilisation et aux projets gérant des volumes de concurrence inférieurs.

Swoole Process permet aux utilisateurs de changer. Les étapes spécifiques sont les suivantes : créer un processus ; définir l'utilisateur du processus pour démarrer le processus ;

Pour redémarrer le service Swoole, procédez comme suit : Vérifiez l'état du service et obtenez le PID. Utilisez "kill -15 PID" pour arrêter le service. Redémarrez le service en utilisant la même commande que celle utilisée pour démarrer le service.

Comparaison des performances : Débit : Swoole a un débit plus élevé grâce à son mécanisme de coroutine. Latence : la commutation de contexte de coroutine de Swoole a une surcharge et une latence plus faibles. Consommation de mémoire : les coroutines de Swoole occupent moins de mémoire. Facilité d'utilisation : Swoole fournit une API de programmation simultanée plus facile à utiliser.

Swoole en action : Comment utiliser les coroutines pour le traitement de tâches simultanées Introduction Dans le développement quotidien, nous rencontrons souvent des situations où nous devons gérer plusieurs tâches en même temps. La méthode de traitement traditionnelle consiste à utiliser plusieurs threads ou multi-processus pour réaliser un traitement simultané, mais cette méthode présente certains problèmes de performances et de consommation de ressources. En tant que langage de script, PHP ne peut généralement pas utiliser directement des méthodes multithread ou multi-processus pour gérer les tâches. Cependant, avec l'aide de la bibliothèque de coroutines Swoole, nous pouvons utiliser des coroutines pour obtenir un traitement de tâches simultanées hautes performances. Cet article présentera

Avec le développement de la technologie IoT, de plus en plus d’appareils sont capables de se connecter à Internet, de communiquer et d’interagir via Internet. Dans le développement d'applications IoT, le protocole de transport de télémétrie Message Queuing (MQTT) est largement utilisé comme protocole de communication léger. Cet article explique comment utiliser l'expérience pratique du développement Java pour implémenter les fonctions IoT via MQTT. 1. Qu'est-ce que MQT ? QTT est un protocole de transmission de messages basé sur le modèle de publication/abonnement. Il présente une conception simple et une faible surcharge, et convient aux scénarios d'application qui transmettent rapidement de petites quantités de données.
