workerman/mqtt
MQTT est un protocole de transfert de messages en mode publication/abonnement basé sur une architecture client-serveur, qui est devenu une composante essentielle de l'Internet des objets (IoT). Son idée directrice est d'être léger, ouvert, simple et normé, ce qui facilite son implémentation. Ces caractéristiques en font un excellent choix pour de nombreux scénarios, en particulier dans des environnements contraints comme les communications machine à machine (M2M) et les environnements IoT.
workerman\mqtt est une bibliothèque cliente MQTT asynchrone basée sur workerman, pouvant être utilisée pour recevoir ou envoyer des messages au format MQTT. Elle prend en charge QoS 0, QoS 1, et QoS 2. Elle supporte les versions MQTT 3.1 3.1.1 5.
Adresse du projet
https://github.com/walkor/mqtt
Installation
composer require workerman/mqtt
Support
- MQTT
- MQTT5
- MQTT sur websocket
Exemple
subscribe.php
<?php
use Workerman\Worker;
require_once __DIR__ . '/vendor/autoload.php';
$worker = new Worker();
$worker->onWorkerStart = function(){
$mqtt = new Workerman\Mqtt\Client('mqtt://test.mosquitto.org:1883');
$mqtt->onConnect = function($mqtt) {
$mqtt->subscribe('test');
};
$mqtt->onMessage = function($topic, $content){
var_dump($topic, $content);
};
$mqtt->connect();
};
Worker::runAll();
Exécutez dans la ligne de commande php subscribe.php start pour démarrer
publish.php
<?php
use Workerman\Worker;
require_once __DIR__ . '/vendor/autoload.php';
$worker = new Worker();
$worker->onWorkerStart = function(){
$mqtt = new Workerman\Mqtt\Client('mqtt://test.mosquitto.org:1883');
$mqtt->onConnect = function($mqtt) {
$mqtt->publish('test', 'hello workerman mqtt');
};
$mqtt->connect();
};
Worker::runAll();
Exécutez dans la ligne de commande php publish.php start pour démarrer.
workerman\mqtt\Client Interface
Client::__construct()Client::connect()Client::publish()Client::subscribe()Client::unsubscribe()Client::disconnect()Client::close()callback onConnectcallback onMessagecallback onErrorcallback onClose
__construct (string $address, [array $options])
Crée une instance de client mqtt.
-
$addressadresse du serveur mqtt, format similaire à 'mqtt://test.mosquitto.org:1883'. -
$optionstableau des options du client, pouvant inclure les options suivantes :keepalive: l'intervalle de temps entre les envois de heartbeat au serveur, par défaut 50 secondes, un réglage à 0 désactive le heartbeat.client_id: identifiant du client, par défaut c'est"workerman-mqtt-client-".mt_rand()protocol_name: nom du protocole,MQTT(version 3.1.1) ouMQIsdp(version 3.1), par défautMQTTprotocol_level: niveau de protocole, valeur4lorsqueprotocol_nameestMQTT, valeur3lorsqueprotocol_nameestMQIsdpclean_session: nettoyage de la session, par défauttrue. Réglé surfalse, cela permet de recevoir des messages hors ligne de niveauQoS 1etQoS 2.reconnect_period: intervalle de reconnexion, par défaut1seconde,0signifie pas de reconnexion.connect_timeout: temps d'attente pour la connexion mqtt, par défaut30secondes.username: nom d'utilisateur, optionnel.password: mot de passe, optionnel.will: message de dernier souhait, lorsque le client se déconnecte, le Broker enverra automatiquement ce message aux autres clients. Format :topic: sujetcontent: contenuqos: niveauQoSretain: marqueretain
resubscribe: si le client doit se réabonner aux sujets précédents après une déconnexion anormale, par défauttrue.bindtopermet de spécifier sur quel IP et port le client se connecte au Broker, valeur par défaut est ''ssloptions ssl, par défautfalse, si réglé surtrue, une connexion ssl est établie. Supporte également un tableau de contexte ssl pour configurer les certificats locaux, le contexte ssl est référencé ici https://php.net/manual/en/context.ssl.phpdebugactive ou non le mode debug, qui peut afficher des informations détaillées sur la communication avec le Broker, par défautfalse.uriadresse uri pour mqtt sur websocket, généralement/mqtt.
connect()
Se connecter au Broker.
publish(String $topic, String $content, [array $options], [callable $callback])
Publier un message sur un sujet donné.
$topicsujet$contentmessage$optionstableau d'options, comprenantqosniveauQoS, par défaut0retainmarqueretain, par défautfalsedupindicateur de répétion, par défautfalse
$callback-function (\Exception $exception = null)(non supporté pour QoS 0), déclenché en cas d'erreur ou de succès de publication,$exceptionest l'objet d'exception, lorsqu'aucune erreur ne se produit,$exceptionestnull, et vice versa.
subscribe(mixed $topic, [array $options], [callable $callback])
S'abonner à un sujet ou plusieurs sujets.
$topicpeut être une chaîne (s'abonner à un sujet) ou un tableau (s'abonner à plusieurs sujets).
Lors de l'abonnement à plusieurs sujets,$topicest un tableau associatif où le sujet est la clé et leQoSest la valeur, par exemplearray('topic1'=> 0, 'topic2'=> 1).$optionstableau d'options d'abonnement, comprenant les paramètres suivants :qosniveauQoS, par défaut0.
$callback-function (\Exception $exception = null, array $granted = [])
Fonction de rappel, déclenchée lors du succès de l'abonnement ou en cas d'erreur.exceptionobjet d'exception,nullen l'absence d'erreurs, et vice versa.grantedtableau des résultats d'abonnement, similaire àarray('topic' => 'qos', 'topic' => 'qos'), où :topicest le sujet abonné.qosniveauQoSaccepté par le Broker.
unsubscribe(mixed $topic, [callable $callback])
Se désabonner.
$topicest une chaîne ou un tableau de chaînes, par exemplearray('topic1', 'topic2').$callback-function (\Exception $e = null), rappel déclenché lors du succès ou de l'échec.
disconnect()
Se déconnecter normalement du Broker, le message DISCONNECT sera envoyé au Broker.
close()
Se déconnecter de force du Broker, ne pas envoyer le message DISCONNECT au Broker.
callback onConnect(Client $mqtt)
Déclenchée lorsque la connexion avec le Broker est établie. À ce moment, le message CONNACK du Broker a déjà été reçu.
callback onMessage(String $topic, String $content, Client $mqtt)
function (topic, message, packet) {}
Déclenchée lorsque le client reçoit un message Publish.
$topicsujet reçu.$contentcontenu du message reçu.$mqttinstance de client mqtt.
callback onError(\Exception $exception = null)
Déclenchée lorsqu'une certaine erreur se produit lors de la connexion.
callback onClose()
Déclenchée lorsque la connexion est fermée, que ce soit par une fermeture active du client ou par la fermeture du serveur.