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ü


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

Bir mqtt istemci örneği oluşturur.

  • $address mqtt sunucu adresi, formatı 'mqtt://test.mosquitto.org:1883' gibi olmalıdır.

  • $options istemci 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) veya MQIsdp (3.1 versiyonu), varsayılanı MQTT'dir.
    • protocol_level: Protokol seviyesi, protocol_name MQTT olduğunda değeri 4, protocol_name MQIsdp olduğunda değeri 3'tür.
    • clean_session: Oturumu temizle, varsayılan olarak true'dur. false olarak ayarlandığında QoS 1 ve QoS 2 düzeyindeki çevrimdışı mesajları alabilirsiniz.
    • reconnect_period: Yeniden bağlanma zaman aralığı, varsayılan 1 saniye, 0 yeniden bağlanmayı devre dışı bırakır.
    • connect_timeout: MQTT bağlantısı için zaman aşımı süresi, varsayılan 30 saniye.
    • 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: Konu
      • content: İçerik
      • qos: QoS seviyesi
      • retain: retain iş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, true olarak 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.php
    • debug: 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.

  • $topic Konu
  • $content Mesaj
  • $options Seçenekler dizisi, içermektedir:
    • qos QoS seviyesi, varsayılan 0
    • retain retain işareti, varsayılan false
    • dup yeniden gönderim işareti, varsayılan false
  • $callback - function (\Exception $exception = null) (QoS 0 olduğunda bu ayar desteklenmez) Hata oluştuğunda veya yayınlama başarılı olduğunda tetiklenir, $exception bir istisna nesnesidir, hata oluşmadığında $exception null olur, aynı şekilde devam eder.

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

Bir konuya veya birden fazla konuya abone olur.

  • $topic Bir dize (bir konuya abone olmak için) veya dizi (birden fazla konuya abone olmak için) olmalıdır,
    Birden fazla konuya abone olurken, $topic konusu anahtar, QoS değeri dizisi olmalıdır, örneğin array('topic1'=> 0, 'topic2'=> 1)
  • $options Abonelik seçenekleri dizisi, aşağıdaki ayarları içerir:
    • qos QoS seviyesi, varsayılan 0
  • $callback - function (\Exception $exception = null, array $granted = [])
    Geri çağırma fonksiyonu, abonelik başarılı olduğunda veya hata oluştuğunda tetiklenir.
    • exception Hata nesnesi, hata oluşmadığında null olur, aynı şekilde devam eder.
    • granted Abonelik sonuçları dizisi, array('topic' => 'qos', 'topic' => 'qos') gibi görünür. Burada:
    • topic Abone olunan konu
    • qos Broker'ın kabul ettiği QoS seviyesi

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

Aboneliği iptal eder.

  • $topic Bir dize veya dize dizisi olmalıdır, örneğin array('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.

  • $topic Alınan konu
  • $content Alınan mesaj içeriği
  • $mqtt mqtt 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.

Daha Fazla Örnek examples/workerman