workerman/mqtt
MQTT est un protocole de transmission de messages en mode publication / abonnement, avec une architecture client-serveur, qui est devenu un élément important de l'Internet des objets. Il est conçu pour être léger, ouvert, simple, normalisé et facile à implémenter. Ces caractéristiques en font un excellent choix pour de nombreux scénarios, en particulier dans des environnements contraints tels que la communication machine à machine (M2M) et l'Internet des objets (IoT).
workerman\mqtt est une bibliothèque cliente MQTT asynchrone basée sur Workerman, qui peut être utilisée pour recevoir ou envoyer des messages selon le protocole MQTT. Elle prend en charge les niveaux de qualité de service QoS 0
, QoS 1
et QoS 2
. Elle prend également en charge les versions MQTT
3.1
, 3.1.1
et 5
.
Adresse du projet
https://github.com/walkor/mqtt
Installation
composer require workerman/mqtt
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 en ligne de commande avec 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 en ligne de commande avec php publish.php start
pour démarrer.
Interface Client de workerman\mqtt
Client::__construct()
Client::connect()
Client::publish()
Client::subscribe()
Client::unsubscribe()
Client::disconnect()
Client::close()
callback onConnect
callback onMessage
callback onError
callback onClose
__construct (string $address, [array $options])
Crée une instance de client MQTT.
-
$address
L'adresse du serveur MQTT, au format 'mqtt://test.mosquitto.org:1883'. -
$options
Un tableau d'options client, pouvant définir les options suivantes :keepalive
: L'intervalle de temps entre les envois de messages "heartbeat" du client au serveur, par défaut 50 secondes, 0 pour désactiver.client_id
: L'ID du client, avec une valeur par défaut de"workerman-mqtt-client-".mt_rand()
.protocol_name
: Le nom du protocole,MQTT
(version 3.1.1) ouMQIsdp
(version 3.1), par défautMQTT
.protocol_level
: Niveau de protocole,4
lorsqueprotocol_name
estMQTT
, et3
lorsqueprotocol_name
estMQIsdp
.clean_session
: Session propre, par défauttrue
. En le configurant surfalse
, le client peut recevoir des messages hors ligne avec les niveaux de QoS 1 et 2.reconnect_period
: Intervalle de reconnexion, par défaut1
seconde, 0 pour désactiver.connect_timeout
: Délai de connexion MQTT, par défaut 30 secondes.username
: Nom d'utilisateur, facultatif.password
: Mot de passe, facultatif.will
: Message de volonté. Lorsqu'un client se déconnecte, le courtier envoie automatiquement un message de volonté à d'autres clients. Au format :topic
: Sujetcontent
: Contenuqos
: Niveau de QoSretain
: Drapeauretain
resubscribe
: Lorsque la connexion est interrompue de manière anormale et se reconnecte, réabonner les sujets précédents, par défauttrue
.bindto
: Spécifie l'adresse IP et le port locaux à utiliser pour la connexion au courtier, valeur par défaut''
.ssl
: Option SSL, par défautfalse
. Si défini surtrue
, la connexion SSL est activée. Prend également en charge le passage d'un tableau de contexte SSL pour configurer les certificats locaux, etc. (voir la référence du contexte SSL sur https://php.net/manual/en/context.ssl.php)debug
: Activer le mode de débogage. En mode débogage, des informations détaillées sur la communication avec le courtier seront affichées, par défautfalse
.
connect()
Connecte le client au courtier.
publish(String $topic, String $content, [array $options], [callable $callback])
Publie un message sur un sujet donné.
$topic
: Sujet$content
: Message$options
: Tableau d'options, comprenantqos
: Niveau de QoS, par défaut0
retain
: Retenir le drapeau, par défautfalse
dup
: Drapeau de redondance, par défautfalse
$callback
-function (\Exception $exception = null)
(non pris en charge pour les messages QoS 0). Déclenché en cas d'erreur ou de succès lors de la publication.$exception
est l'objet d'exception,null
s'il n'y a pas d'erreur, idem ci-dessous.
subscribe(mixed $topic, [array $options], [callable $callback])
S'abonne à un ou plusieurs sujets.
$topic
: String (abonnement à un sujet) ou tableau (abonnement à plusieurs sujets).
Lors de l'abonnement à plusieurs sujets,$topic
est un tableau avec les sujets comme clés et les niveaux de QoS comme valeurs, par exemplearray('sujet1'=> 0, 'sujet2'=> 1)
.$options
: Tableau d'options d'abonnement, comprenant les paramètres suivants :qos
: Niveau de QoS, par défaut0
$callback
-function (\Exception $exception = null, array $granted = [])
Cette fonction de rappel est déclenchée en cas de succès ou d'erreur lors de l'abonnement.exception
: Objet d'exception,null
s'il n'y a pas d'erreur, idem ci-dessus.granted
: Tableau de résultats d'abonnement, similaire àarray('sujet' => 'qos', 'sujet' => 'qos')
où :sujet
: Sujet abonnéqos
: Niveau de QoS accepté par le courtier
unsubscribe(mixed $topic, [callable $callback])
Annule l'abonnement à des sujets.
$topic
: String ou tableau de chaînes, par exemplearray('sujet1', 'sujet2')
$callback
-function (\Exception $e = null)
, déclenché en cas de succès ou d'échec
disconnect()
Déconnecte normalement du courtier. Un message DISCONNECT
est envoyé au courtier.
close()
Ferme la connexion de force avec le courtier, sans envoyer de message DISCONNECT
.
callback onConnect(Client $mqtt)
Déclenché une fois que la connexion avec le courtier a été établie. À ce stade, le client a reçu le message CONNACK
du courtier.
callback onMessage(String $topic, String $content, Client $mqtt)
function (sujet, message, paquet) {}
Déclenchée lorsqu'un client reçoit le message Publish.
$topic
: Sujet reçu$content
: Contenu du message reçu$mqtt
: Instance du client MQTT
callback onError(\Exception $exception = null)
Déclenchée en cas d'erreur de connexion
callback onClose()
Déclenchée lors de la fermeture de la connexion, que ce soit par le client ou par le serveur.