workerman/mqtt
MQTT, istemci-sunucu mimarisine dayalı bir yayın/abone olma modeline sahip bir mesaj iletim protokolüdür ve nesnelerin internetinin önemli bir parçası haline gelmiştir. Tasarım felsefesi, hafif, açık, basit ve standart olmasını sağlamakta, uygulanması kolaydır. Bu özellikler, MQTT'yi birçok senaryo için iyi bir seçim haline getirmektedir, özellikle de makine ile makine iletişimi (M2M) ve nesnelerin interneti ortamları (IoT) gibi kısıtlı ortamlarda.
workerman\mqtt, MQTT protokolünün mesajlarını almak veya göndermek için kullanılabilecek, workerman tabanlı bir asenkron mqtt istemci kütüphanesidir. QoS 0, QoS 1, QoS 2 desteklemektedir. MQTT 3.1 3.1.1 5 versiyonlarını destekler.
Proje Adresi
https://github.com/walkor/mqtt
Kurulum
composer require workerman/mqtt
Destek
- MQTT
- MQTT5
- Websocket üzerinden MQTT
Örnek
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();
Komut satırında çalıştırın php subscribe.php start başlatmak için.
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();
Komut satırında çalıştırın php publish.php start başlatmak için.
workerman\mqtt\Client Arayüzü
Client::__construct()Client::connect()Client::publish()Client::subscribe()Client::unsubscribe()Client::disconnect()Client::close()callback onConnectcallback onMessagecallback onErrorcallback onClose
__construct (string $address, [array $options])
Bir mqtt istemci örneği oluşturur.
-
$addressmqtt sunucu adresi, formatı 'mqtt://test.mosquitto.org:1883' gibi olmalıdır. -
$optionsistemci seçenekleri dizisi, aşağıdaki seçenekleri ayarlamak için kullanılabilir:keepalive: İstemcinin sunucuya gönderdiği kalp atışının zaman aralığı, varsayılan 50 saniye, 0 olarak ayarlanması kalp atışını devre dışı bırakır.client_id: İstemci id'si, ayarlanmamışsa varsayılan olarak"workerman-mqtt-client-".mt_rand()kullanılır.protocol_name: Protokol ismi,MQTT(3.1.1 versiyonu) veyaMQIsdp(3.1 versiyonu), varsayılanıMQTT'dir.protocol_level: Protokol seviyesi,protocol_nameMQTTolduğunda değeri4,protocol_nameMQIsdpolduğunda değeri3'tür.clean_session: Oturumu temizle, varsayılan olaraktrue'dur.falseolarak ayarlandığındaQoS 1veQoS 2düzeyindeki çevrimdışı mesajları alabilirsiniz.reconnect_period: Yeniden bağlanma zaman aralığı, varsayılan1saniye,0yeniden bağlanmayı devre dışı bırakır.connect_timeout: MQTT bağlantısı için zaman aşımı süresi, varsayılan30saniye.username: Kullanıcı adı, isteğe bağlı.password: Şifre, isteğe bağlı.will: Vasiyet mesajı, istemci kesildiğinde Broker otomatik olarak diğer istemcilere vasiyet mesajını gönderir. Formatı:topic: Konucontent: İçerikqos:QoSseviyesiretain:retainişareti
resubscribe: Bağlantı beklenmedik bir şekilde kesildiğinde ve yeniden bağlandığında, önceki konulara yeniden abone olunup olunmayacağı, varsayılanıtrue'dur.bindto: Yerel olarak hangi ip ve port ile Broker'a bağlanılacağını belirtmek için kullanılır, varsayılan değeri''dir.ssl: ssl seçenekleri, varsayılanıfalse'dur,trueolarak ayarlanırsa ssl ile bağlanır. Ayrıca yerel sertifika gibi konfigüre edilmeleri için ssl bağlam dizisi de geçirebilirsiniz, ssl bağlamına referans için https://php.net/manual/en/context.ssl.phpdebug: Debug modunun açılıp açılmayacağını belirler, debug modunda Broker ile iletişimin detaylı bilgilerini çıkartabilir, varsayılanıfalse'dur.uri: websocket üzerinden mqtt'nin uri adresi, genellikle/mqtt'dir.
connect()
Broker'a bağlanır.
publish(String $topic, String $content, [array $options], [callable $callback])
Belirli bir konuya bir mesaj gönderir.
$topicKonu$contentMesaj$optionsSeçenekler dizisi, içermektedir:qosQoSseviyesi, varsayılan0retainretain işareti, varsayılanfalsedupyeniden gönderim işareti, varsayılanfalse
$callback-function (\Exception $exception = null)(QoS0olduğunda bu ayar desteklenmez) Hata oluştuğunda veya yayınlama başarılı olduğunda tetiklenir,$exceptionbir istisna nesnesidir, hata oluşmadığında$exceptionnullolur, aynı şekilde devam eder.
subscribe(mixed $topic, [array $options], [callable $callback])
Bir konuya veya birden fazla konuya abone olur.
$topicBir dize (bir konuya abone olmak için) veya dizi (birden fazla konuya abone olmak için) olmalıdır,
Birden fazla konuya abone olurken,$topickonusu anahtar,QoSdeğeri dizisi olmalıdır, örneğinarray('topic1'=> 0, 'topic2'=> 1)$optionsAbonelik seçenekleri dizisi, aşağıdaki ayarları içerir:qosQoSseviyesi, varsayılan0
$callback-function (\Exception $exception = null, array $granted = [])
Geri çağırma fonksiyonu, abonelik başarılı olduğunda veya hata oluştuğunda tetiklenir.exceptionHata nesnesi, hata oluşmadığındanullolur, aynı şekilde devam eder.grantedAbonelik sonuçları dizisi,array('topic' => 'qos', 'topic' => 'qos')gibi görünür. Burada:topicAbone olunan konuqosBroker'ın kabul ettiğiQoSseviyesi
unsubscribe(mixed $topic, [callable $callback])
Aboneliği iptal eder.
$topicBir dize veya dize dizisi olmalıdır, örneğinarray('topic1', 'topic2')$callback-function (\Exception $e = null), başarılı veya başarısız olduğunda tetiklenen geri çağırma.
disconnect()
Broker ile bağlantıyı düzgün bir şekilde keser, DISCONNECT mesajı Broker'a gönderilir.
close()
Broker ile bağlantıyı zorla keser, Broker'a DISCONNECT mesajı gönderilmez.
callback onConnect(Client $mqtt)
Broker ile bağlantı kurulduğunda tetiklenir. Bu noktada Broker'dan CONNACK mesajı alınmıştır.
callback onMessage(String $topic, String $content, Client $mqtt)
function (topic, message, packet) {}
İstemci Publish mesajını aldığında tetiklenir.
$topicAlınan konu$contentAlınan mesaj içeriği$mqttmqtt istemci örneği.
callback onError(\Exception $exception = null)
Bağlantıda bir hata meydana geldiğinde tetiklenir.
callback onClose()
Bağlantı kapandığında tetiklenir, ister istemci aktif olarak kapatsın, isterse sunucu kapatsın onClose tetiklenecektir.