workerman/mqtt
MQTT, istemci-sunucu mimarisi üzerine kurulu bir yayın/abone modeli mesaj iletim protokolüdür ve nesnelerin interneti'nin önemli bir parçası haline gelmiştir. Tasarımı hafif, açık, basit, standart ve uygulanabilir olma düşüncesine dayanır. Bu özellikler, pek çok senaryo için ideal bir seçim olmasını sağlar, özellikle de makine ile makine iletişimi (M2M) ve nesnelerin interneti (IoT) gibi sınırlı ortamlar için.
workerman\mqtt, workerman üzerinde asenkron MQTT istemci kütüphanesidir ve MQTT protokolü mesajlarını almak veya göndermek için kullanılabilir. QoS 0
, QoS 1
, QoS 2
'yi destekler. MQTT
3.1
, 3.1.1
, 5
sürümlerini destekler.
Proje adresi
https://github.com/walkor/mqtt
Kurulum
composer require workerman/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 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 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 onConnect
callback onMessage
callback onError
callback onClose
__construct (string $address, [array $options])
Bir MQTT istemci örneği oluşturur.
$address
MQTT sunucu adresi, formatı 'mqtt://test.mosquitto.org:1883' gibi.$options
istemci seçenekleri dizisi, aşağıdaki seçenekleri ayarlayabilir:keepalive
: İstemci tarafından sunucuya gönderilen kalp atışı aralığı, varsayılan 50 saniye, 0'a ayarlanırsa kalp atışı kullanılmazclient_id
: İstemci kimliği, ayarlanmadıysa varsayılan olarak"workerman-mqtt-client-".mt_rand()
protocol_name
: Protokol adı,MQTT
(3.1.1 sürümü) veyaMQIsdp
(3.1 sürümü), varsayılan olarakMQTT
protocol_level
: Protokol seviyesi,protocol_name
MQTT
olduğunda4
değeri,protocol_name
MQIsdp
olduğunda3
değeridirclean_session
: Temiz oturum, varsayılan olaraktrue
.false
olarak ayarlanırsa,QoS 1
veQoS 2
düzeyinde offline mesajlar alınabilirreconnect_period
: Yeniden bağlanma süresi aralığı, varsayılan1
saniye,0
bağlantının yeniden kurulmaması anlamına gelirconnect_timeout
: MQTT bağlantı zaman aşımı süresi, varsayılan30
saniyeusername
: Kullanıcı adı, isteğe bağlıpassword
: Şifre, isteğe bağlıwill
: Veda mesajı, istemci kesildiğinde Broker otomatik olarak diğer istemcilere veda mesajı gönderir. Format:topic
: Konucontent
: İçerikqos
:QoS
seviyesiretain
:retain
işareti
resubscribe
: Bağlantı kesildiğinde ve yeniden bağlandığında, önceki konuları yeniden abone edip etmeyeceği, varsayılan olaraktrue
bindto
: Broker'a hangi IP ve porttan bağlantı başlatılacağını belirtmek için kullanılır, varsayılan değer''
ssl
: ssl seçeneği, varsayılan olarakfalse
,true
olarak ayarlanırsa ssl ile bağlantı kurar. Aynı zamanda ssl bağlamak için ssl bağlamak için yerel sertifika vb. ayarlamak için ssl context dizisi geçilebilir, ssl context, https://php.net/manual/en/context.ssl.php adresinden incelenebilirdebug
: hata ayıklama modunun açılıp kapatılması, hata ayıklama modu ile Broker ile iletişim ayrıntıları çıkartılır, varsayılan olarakfalse
connect()
Broker ile bağlantı kurar
publish(String $topic, String $content, [array $options], [callable $callback])
Bir konuya bir mesaj yayınlar
$topic
konu$content
mesaj$options
seçenekler dizisi, içerirqos
QoS
seviyesi, varsayılan0
retain
retain işareti, varsayılanfalse
dup
tekrar gönderme bayrağı, varsayılanfalse
$callback
-function (\Exception $exception = null)
(QoS 0 için bu ayar desteklenmez), bir hata meydana geldiğinde veya yayın başarılı olduğunda tetiklenir,$exception
hata nesnesidir, hata meydana gelmediğinde$exception
null
'dır, aynı durum geçerlidir.
subscribe(mixed $topic, [array $options], [callable $callback])
Bir konuyu veya birden fazla konuyu abone olur
$topic
bir dize (bir konu abonelik) veya bir dizi (çoklu konu abonelik)dir,
birden fazla konu abone olunacaksa,$topic
anahtar olacak konu, değeriQoS
olacak bir dizi, örneğinarray('konu1' => 0, 'konu2' => 1)
olmalıdır$options
abone seçenekleri dizisi, aşağıdakileri içerir:qos
QoS
seviyesi, varsayılan0
$callback
-function (\Exception $exception = null, array $granted = [])
geri çağırma fonksiyonu, abonelik başarılı veya bir hata meydana geldiğinde tetiklenirexception
hata nesnesi, hata olmadığındanull
'dır, diğerleri için aynı geçerlidirgranted
abonelik sonuç dizisi,array('konu' => 'qos', 'konu' => 'qos')
gibi, burada:konu
abone olunan konuqos
Broker'ın kabul ettiğiQoS
seviyesi
unsubscribe(mixed $topic, [callable $callback])
Aboneliği iptal eder
$topic
bir dize veya dize dizisi,array('konu1', 'konu2')
gibi$callback
-function (\Exception $e = null)
, başarılı veya başarısız olduğunda tetiklenen geri çağırma
disconnect()
Broker ile normal bağlantıyı keser, DISCONNECT
paketi Broker'a gönderilir.
close()
Broker'la zorla bağlantıyı keser, Broker'a DISCONNECT
paketi gönderilmez.
callback onConnect(Client $mqtt)
Broker ile bağlantı kurulduğunda tetiklenir. Bu noktada Broker'ın CONNACK
paketi alınmış olacaktır.
callback onMessage(String $topic, String $content, Client $mqtt)
function (topic, message, packet) {}
İstemci bir Yayın paketi 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 oluştuğunda tetiklenir
callback onClose()
Bağlantı kapatıldığında tetiklenir, istemci tarafından kapatılmış olsun ya da sunucu tarafından kapatılmış olsunonClose
tetiklenecektir