workerman/mqtt
MQTT ist ein Nachrichtenübertragungsprotokoll mit einem Client-Server-Architektur, das auf dem Publish/Subscribe-Modell basiert und eine wichtige Rolle im Internet der Dinge (IoT) spielt. Seine Designphilosophie ist leichtgewichtig, offen, einfach und standardisiert, was die Implementierung erleichtert. Diese Eigenschaften machen es zu einer ausgezeichneten Wahl für viele Anwendungsfälle, insbesondere in eingeschränkten Umgebungen wie der Maschinen-zu-Maschinen-Kommunikation (M2M) und IoT-Umgebungen.
workerman\mqtt ist eine asynchrone MQTT-Client-Bibliothek, die auf Workerman basiert und verwendet werden kann, um MQTT-Protokollnachrichten zu empfangen oder zu senden. Es unterstützt QoS 0, QoS 1, QoS 2. Es unterstützt die Versionen MQTT 3.1, 3.1.1 und 5.
Projektadresse
https://github.com/walkor/mqtt
Installation
composer require workerman/mqtt
Unterstützung
- MQTT
- MQTT5
- MQTT über Websocket
Beispiel
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();
Führen Sie im Terminal php subscribe.php start aus, um zu starten.
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();
Führen Sie im Terminal php publish.php start aus, um zu starten.
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])
Erstellt eine Instanz eines MQTT-Client.
-
$addressist die Adresse des MQTT-Servers im Format 'mqtt://test.mosquitto.org:1883'. -
$optionsist ein Array mit Client-Optionen, das folgende Optionen setzen kann:keepalive: Zeitintervall, in dem der Client Heartbeats an den Server sendet, standardmäßig 50 Sekunden,0bedeutet, dass Heartbeats deaktiviert sindclient_id: Client-ID, wenn nicht gesetzt, standardmäßig"workerman-mqtt-client-".mt_rand()protocol_name: Protokollname,MQTT(Version 3.1.1) oderMQIsdp(Version 3.1), standardmäßigMQTTprotocol_level: Protokollstufe, wennprotocol_nameMQTTist, ist der Wert4, wennprotocol_nameMQIsdpist, ist der Wert3clean_session: Sitzung reinigen, standardmäßigtrue. Wird auffalsegesetzt, umQoS 1undQoS 2Offline-Nachrichten zu empfangenreconnect_period: Zeitintervall für die Wiederverbindung, standardmäßig1Sekunde,0bedeutet keine Wiederverbindungconnect_timeout: Timeout für die Verbindung zum MQTT, standardmäßig30Sekundenusername: Benutzername, optionalpassword: Passwort, optionalwill: Will-Nachricht, wenn der Client getrennt wird, wird der Broker diese Will-Nachricht automatisch an andere Clients senden. Format:topic: Themacontent: Inhaltqos:QoS-Stuferetain:retain-Flag
resubscribe: Nach einer unordentlichen Trennung und Wiederverbindung, ob frühere Themen erneut abonniert werden sollen, standardmäßigtruebindto: Gibt an, welche IP und welchen Port lokal verwendet wird, um eine Verbindung zum Broker herzustellen, standardmäßig ist der Wert''ssl: SSL-Optionen, standardmäßigfalse, wenn auftruegesetzt, wird eine Verbindung über SSL hergestellt. Unterstützt auch die Übergabe eines Arrays mit SSL-Kontext, um lokale Zertifikate usw. zu konfigurieren, SSL-Kontext-Referenz https://php.net/manual/en/context.ssl.phpdebug: Ob der Debug-Modus aktiviert ist, im Debug-Modus können detaillierte Informationen zur Kommunikation mit dem Broker ausgegeben werden, standardmäßigfalseuri: URI-Adresse für MQTT über Websocket, normalerweise/mqtt
connect()
Verbindet sich mit dem Broker.
publish(String $topic, String $content, [array $options], [callable $callback])
Veröffentlicht eine Nachricht an ein bestimmtes Thema.
$topicThema$contentNachricht$optionsOptionsarray, einschließlichqosQoS-Stufe, standardmäßig0retainretain-Flag, standardmäßigfalsedupWiederholungsflag, standardmäßigfalse
$callback-function (\Exception $exception = null)(wird bei QoS 0 nicht unterstützt), wird ausgelöst, wenn ein Fehler auftritt oder die Veröffentlichung erfolgreich war,$exceptionist das Ausnahmeobjekt, wenn kein Fehler auftritt, ist$exceptionnull, und vice versa.
subscribe(mixed $topic, [array $options], [callable $callback])
Abonnieren eines Themen oder mehrerer Themen.
$topicist entweder ein String (zum Abonnieren eines Themas) oder ein Array (zum Abonnieren mehrerer Themen),
Wenn mehrere Themen abonniert werden, ist$topicdas Thema, das als Key verwendet wird, undQoSals Wert, z.B.array('topic1'=> 0, 'topic2'=> 1)$optionsist ein Abonnement-Optionsarray, das folgende Einstellungen enthält:qosQoS-Stufe, standardmäßig0
$callback-function (\Exception $exception = null, array $granted = [])
Callback-Funktion, die ausgelöst wird, wenn das Abonnieren erfolgreich ist oder ein Fehler auftrittexceptionAusnahmeobjekt, wenn kein Fehler auftritt, ist esnullgrantedAbonnement-Ergebnis-Array, ähnlicharray('topic' => 'qos', 'topic' => 'qos'), wobei:topicdas abonnierte Thema istqosdie vom Broker akzeptierteQoS-Stufe
unsubscribe(mixed $topic, [callable $callback])
Abonnement kündigen.
$topicist ein String oder ein Array von Strings, z.B.array('topic1', 'topic2')$callback-function (\Exception $e = null), Callback, der bei Erfolg oder Misserfolg ausgelöst wird.
disconnect()
Trennt die Verbindung zum Broker ordnungsgemäß, die DISCONNECT-Nachricht wird an den Broker gesendet.
close()
Zwingt die Trennung von der Broker-Verbindung, ohne die DISCONNECT-Nachricht an den Broker zu senden.
callback onConnect(Client $mqtt)
Wird ausgelöst, wenn die Verbindung zum Broker etabliert wurde. Zu diesem Zeitpunkt wurde das CONNACK-Nachricht des Brokers bereits empfangen.
callback onMessage(String $topic, String $content, Client $mqtt)
function (topic, message, packet) {}
Wird ausgelöst, wenn der Client die Publish-Nachricht erhält.
$topicdas empfangene Thema$contentder empfangene Nachrichteninhalt$mqttdie MQTT-Client-Instanz.
callback onError(\Exception $exception = null)
Wird ausgelöst, wenn beim Verbindungsaufbau ein Fehler auftritt.
callback onClose()
Wird ausgelöst, wenn die Verbindung geschlossen wird, unabhängig davon, ob der Client die Verbindung aktiv schließt oder der Server.