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


__construct (string $address, [array $options])

Erstellt eine Instanz eines MQTT-Client.

  • $address ist die Adresse des MQTT-Servers im Format 'mqtt://test.mosquitto.org:1883'.

  • $options ist 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, 0 bedeutet, dass Heartbeats deaktiviert sind
    • client_id: Client-ID, wenn nicht gesetzt, standardmäßig "workerman-mqtt-client-".mt_rand()
    • protocol_name: Protokollname, MQTT (Version 3.1.1) oder MQIsdp (Version 3.1), standardmäßig MQTT
    • protocol_level: Protokollstufe, wenn protocol_name MQTT ist, ist der Wert 4, wenn protocol_name MQIsdp ist, ist der Wert 3
    • clean_session: Sitzung reinigen, standardmäßig true. Wird auf false gesetzt, um QoS 1 und QoS 2 Offline-Nachrichten zu empfangen
    • reconnect_period: Zeitintervall für die Wiederverbindung, standardmäßig 1 Sekunde, 0 bedeutet keine Wiederverbindung
    • connect_timeout: Timeout für die Verbindung zum MQTT, standardmäßig 30 Sekunden
    • username: Benutzername, optional
    • password: Passwort, optional
    • will: Will-Nachricht, wenn der Client getrennt wird, wird der Broker diese Will-Nachricht automatisch an andere Clients senden. Format:
      • topic: Thema
      • content: Inhalt
      • qos: QoS-Stufe
      • retain: retain-Flag
    • resubscribe: Nach einer unordentlichen Trennung und Wiederverbindung, ob frühere Themen erneut abonniert werden sollen, standardmäßig true
    • bindto: 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äßig false, wenn auf true gesetzt, 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.php
    • debug: Ob der Debug-Modus aktiviert ist, im Debug-Modus können detaillierte Informationen zur Kommunikation mit dem Broker ausgegeben werden, standardmäßig false
    • uri: 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.

  • $topic Thema
  • $content Nachricht
  • $options Optionsarray, einschließlich
    • qos QoS-Stufe, standardmäßig 0
    • retain retain-Flag, standardmäßig false
    • dup Wiederholungsflag, standardmäßig false
  • $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, $exception ist das Ausnahmeobjekt, wenn kein Fehler auftritt, ist $exception null, und vice versa.

subscribe(mixed $topic, [array $options], [callable $callback])

Abonnieren eines Themen oder mehrerer Themen.

  • $topic ist entweder ein String (zum Abonnieren eines Themas) oder ein Array (zum Abonnieren mehrerer Themen),
    Wenn mehrere Themen abonniert werden, ist $topic das Thema, das als Key verwendet wird, und QoS als Wert, z.B. array('topic1'=> 0, 'topic2'=> 1)
  • $options ist ein Abonnement-Optionsarray, das folgende Einstellungen enthält:
    • qos QoS-Stufe, standardmäßig 0
  • $callback - function (\Exception $exception = null, array $granted = [])
    Callback-Funktion, die ausgelöst wird, wenn das Abonnieren erfolgreich ist oder ein Fehler auftritt
    • exception Ausnahmeobjekt, wenn kein Fehler auftritt, ist es null
    • granted Abonnement-Ergebnis-Array, ähnlich array('topic' => 'qos', 'topic' => 'qos'), wobei:
    • topic das abonnierte Thema ist
    • qos die vom Broker akzeptierte QoS-Stufe

unsubscribe(mixed $topic, [callable $callback])

Abonnement kündigen.

  • $topic ist 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.

  • $topic das empfangene Thema
  • $content der empfangene Nachrichteninhalt
  • $mqtt die 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.

Weitere Beispieleexamples/workerman