PHP und MQTT: Anwendungen basierend auf dem Publish-Subscribe-Modell erstellen
Einführung:
Mit der rasanten Entwicklung des Internets der Dinge müssen immer mehr Geräte in Echtzeit miteinander kommunizieren. MQTT (Message Queuing Telemetry Transport) ist ein leichtes Nachrichtenübertragungsprotokoll, das eine effiziente Kommunikation in Netzwerkumgebungen mit geringer Bandbreite und instabilen Netzwerken erreichen kann. In Kombination mit der PHP-Sprache können wir MQTT verwenden, um Anwendungen basierend auf dem Publish-Subscribe-Modell zu erstellen. In diesem Artikel wird erläutert, wie Sie mithilfe von PHP und MQTT einen einfachen Herausgeber und Abonnenten erstellen.
Umgebungsvorbereitung:
Bevor wir beginnen, müssen wir sicherstellen, dass PHP- und MQTT-Erweiterungen installiert sind. Sie kann über den folgenden Befehl installiert werden:
composer require eclampsia89/php-mqtt
Diese Erweiterung bietet Funktionalität zur Kommunikation mit einem MQTT-Broker.
MQTT-Client erstellen:
Wir müssen zunächst einen MQTT-Client für Verbindung und Kommunikation erstellen. Unten finden Sie eine einfache MQTT-Klasse.
<?php require 'vendor/autoload.php'; use eclampsia89MQTTProtocol; use eclampsia89MQTTMessageType; class MQTTClient { private $client; public function __construct($clientId, $broker, $port) { $this->client = new Protocol($broker, $port, $clientId); } public function connect() { $this->client->connect(); } public function subscribe($topic) { $this->client->subscribe($topic); } public function publish($topic, $message) { $this->client->publish($topic, $message); } public function disconnect() { $this->client->disconnect(); } public function loop() { $this->client->loop(); } }
In dieser Klasse verwenden wir eclampsia89MQTTProtocol
, um eine Verbindung zum Broker herzustellen, und verwenden die Methode connect
zum Herstellen einer Verbindung. Wir können die Methode subscribe
verwenden, um ein Thema zu abonnieren, und die Methode publish
, um Nachrichten zu veröffentlichen. Zum Schluss verwenden wir die Methode disconnect
, um die Verbindung zu trennen. eclampsia89MQTTProtocol
来连接代理,并使用connect
方法进行连接。我们可以使用subscribe
方法来订阅主题,使用publish
方法来发布消息。最后,我们使用disconnect
方法来断开连接。
创建发布者和订阅者:
现在,我们可以创建一个发布者和一个订阅者来进行实际的通信。下面是一个简单的示例。
<?php require 'MQTTClient.php'; // 创建发布者 $publisher = new MQTTClient('publisher', 'mqtt.broker.com', 1883); $publisher->connect(); // 发布消息 $publisher->publish('topic', 'Hello, subscribers!'); // 断开连接 $publisher->disconnect(); // 创建订阅者 $subscriber = new MQTTClient('subscriber', 'mqtt.broker.com', 1883); $subscriber->connect(); // 订阅主题 $subscriber->subscribe('topic'); // 循环等待消息 while (true) { $subscriber->loop(); } // 断开连接 $subscriber->disconnect();
在这个示例中,我们创建了一个名为“publisher”的发布者,并连接到MQTT代理。然后,我们使用publish
方法发布了一个消息,主题为“topic”。最后,我们断开连接。
接下来,我们创建了一个名为“subscriber”的订阅者,并连接到MQTT代理。然后,我们使用subscribe
方法订阅了主题为“topic”的消息。通过调用loop
Jetzt können wir einen Herausgeber und einen Abonnenten erstellen, um die eigentliche Kommunikation durchzuführen. Unten finden Sie ein einfaches Beispiel.
php publisher.php
publish
, um eine Nachricht mit dem Thema „topic“ zu veröffentlichen. Schließlich trennen wir uns. subscribe
, um die Nachricht mit dem Thema „topic“ zu abonnieren. Durch Aufrufen der Methode loop
können wir weiterhin auf Nachrichten vom Agenten warten und diese empfangen. php subscriber.php
Das obige ist der detaillierte Inhalt vonPHP und MQTT: Erstellen von Anwendungen basierend auf dem Publish-Subscribe-Muster. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!