workerman/mqtt
MQTT एक क्लाइंट-सेवा आर्किटेक्चर वाला प्रकाशित/सदस्यता मॉडल का संदेश ट्रांसमिशन प्रोटोकॉल है, जो Internet of Things (IoT) का एक महत्वपूर्ण हिस्सा बन गया है। इसका डिज़ाइन विचार हल्का, खुला, सरल और मानक है, जिससे इसे कार्यान्वित करना आसान है। ये विशेषताएँ इसे कई परिदृश्यों के लिए एक अच्छा विकल्प बनाती हैं, विशेष रूप से सीमित वातावरण जैसे मशीन-से-मशीन (M2M) संचार और IoT वातावरण के लिए।
workerman\mqtt एक workerman आधारित असिंक्रोनस MQTT क्लाइंट लाइब्रेरी है, जिसका उपयोग MQTT प्रोटोकॉल के संदेश को प्राप्त करने या भेजने के लिए किया जा सकता है। यह QoS 0, QoS 1 और QoS 2 का समर्थन करता है। यह MQTT के 3.1, 3.1.1, और 5 संस्करणों का समर्थन करता है।
प्रोजेक्ट पते
https://github.com/walkor/mqtt
स्थापना
composer require workerman/mqtt
समर्थन
- MQTT
- MQTT5
- MQTT over websocket
उदाहरण
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();
कमांड लाइन में चलाएं php subscribe.php start प्रारंभ करने के लिए
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();
कमांड लाइन में चलाएं php publish.php start प्रारंभ करने के लिए।
workerman\mqtt\Client इंटरफ़ेस
Client::__construct()Client::connect()Client::publish()Client::subscribe()Client::unsubscribe()Client::disconnect()Client::close()callback onConnectcallback onMessagecallback onErrorcallback onClose
__construct (string $address, [array $options])
एक mqtt क्लाइंट उदाहरण बनाएं।
-
$addressmqtt सर्वर का पता, स्वरूप 'mqtt://test.mosquitto.org:1883' के समान। -
$optionsक्लाइंट विकल्पों का ऐरे, निम्नलिखित विकल्प सेट कर सकते हैं:keepalive: क्लाइंट द्वारा सर्वर को भेजे जाने वाले कीपलाइव के समय अंतराल, डिफ़ॉल्ट 50 सेकंड, 0 सेट करने पर कीपलाइव को निष्क्रिय करता हैclient_id: क्लाइंट आईडी, यदि सेट नहीं किया गया है तो डिफ़ॉल्ट है"workerman-mqtt-client-".mt_rand()protocol_name: प्रोटोकॉल का नाम,MQTT(3.1.1 संस्करण) याMQIsdp(3.1 संस्करण), डिफ़ॉल्टMQTTprotocol_level: प्रोटोकॉल स्तर,protocol_nameयदिMQTTहै तो मूल्य4,protocol_nameयदिMQIsdpहै तो मूल्य3clean_session: सत्र को साफ करें, डिफ़ॉल्टtrueहै।falseसेट करने परQoS 1औरQoS 2स्तर के ऑफ़लाइन संदेश प्राप्त कर सकते हैंreconnect_period: पुन: कनेक्ट करने का समय अंतराल, डिफ़ॉल्ट1सेकंड,0पुन: कनेक्ट नहीं करताconnect_timeout: mqtt कनेक्शन का टाइमआउट, डिफ़ॉल्ट30सेकंडusername: उपयोगकर्ता नाम, वैकल्पिकpassword: पासवर्ड, वैकल्पिकwill: अंतिम संदेश, जब क्लाइंट डिस्कनेक्ट होता है तो ब्रोकरे अन्य क्लाइंट्स को अंतिम संदेश अपने आप भेजता है। स्वरूप:topic: विषयcontent: सामग्रीqos:QoSस्तरretain:retainचिह्न
resubscribe: जब कनेक्शन असामान्य रूप से डिस्कनेक्ट और पुन: कनेक्ट होता है, तो क्या पहले के विषयों की फिर से सदस्यता ली जाए, डिफ़ॉल्टtruebindtoलोकल पर किस ip और पोर्ट के जरिए ब्रोकरे कनेक्शन शुरू किया जाए, डिफ़ॉल्ट मान''हैsslSSL विकल्प, डिफ़ॉल्टfalseहै, यदिtrueपर सेट किया जाए, तो SSL तरीके से कनेक्ट करें। साथ ही स्थानीय प्रमाणपत्र आदि कॉन्फ़िगर करने के लिए SSL संदर्भ ऐरे पास कर सकते हैं, SSL संदर्भ के लिए देखें https://php.net/manual/en/context.ssl.phpdebugक्या डिबग मोड सक्षम करना है, डिबग मोड के तहत ब्रोकरे से संचार की विस्तृत जानकारी आउटपुट की जा सकती है, डिफ़ॉल्टfalseurimqtt over websocket का uri पता, आमतौर पर/mqtt
connect()
ब्रोकरे से कनेक्ट करें
publish(String $topic, String $content, [array $options], [callable $callback])
किसी विषय पर एक संदेश प्रकाशित करें
$topicविषय$contentसंदेश$optionsविकल्पों का ऐरे, जिसमेंqosQoSस्तर, डिफ़ॉल्ट0retainretain चिह्न, डिफ़ॉल्टfalsedupपुनः प्रेषण चिह्न, डिफ़ॉल्टfalse
$callback-function (\Exception $exception = null),(QoS के लिए 0 पर इस सेटिंग का समर्थन नहीं किया जाता)जब त्रुटि होती है या सफलतापूर्वक प्रकाशित होता है, तब सक्रिय किया जाता है,$exceptionअपवाद वस्तु है, जब कोई त्रुटि नहीं होती है तो$exceptionnullहोता है, उसी प्रकार।
subscribe(mixed $topic, [array $options], [callable $callback])
एक विषय या कई विषयों की सदस्यता लें
$topicएक स्ट्रिंग (एक विषय की सदस्यता के लिए) या ऐरे (कई विषयों की सदस्यता के लिए) है,
जब कई विषयों की सदस्यता ली जाती है, तो$topicमें विषय कुंजी हैं,QoSमान के रूप में होता है, जैसेarray('topic1'=> 0, 'topic2'=> 1)$optionsसदस्यता के विकल्प का ऐरे, जिसमें निम्नलिखित सेटिंग्स शामिल हैं:qosQoSस्तर, डिफ़ॉल्ट0
$callback-function (\Exception $exception = null, array $granted = [])
प्रतिक्रिया फ़ंक्शन, जब सदस्यता सफल या त्रुटि होती है तब सक्रिय किया जाता हैexceptionअपवाद वस्तु, कोई त्रुटि नहीं होने पर यहnullहोती है, उसी प्रकारgrantedसदस्यता परिणामों का ऐरे, जैसा किarray('topic' => 'qos', 'topic' => 'qos')जिसमें:topicसदस्यता लिया गया विषय हैqosब्रोकरे द्वारा स्वीकारितQoSस्तर
unsubscribe(mixed $topic, [callable $callback])
सदस्यता समाप्त करें
$topicएक स्ट्रिंग या स्ट्रिंग का ऐरे है, जैसेarray('topic1', 'topic2')$callback-function (\Exception $e = null), सफलता या विफलता पर सक्रिय होने वाला प्रतिक्रिया
disconnect()
ब्रोकरे के साथ कनेक्शन को सामान्य रूप से قطع करें, DISCONNECT संदेश ब्रोकरे को भेजा जाएगा।
close()
ब्रोकरे के साथ कनेक्शन को मजबूरन बंद करें, इसे ब्रोकरे को DISCONNECT संदेश नहीं भेजेगा।
callback onConnect(Client $mqtt)
जब ब्रोकरे के साथ कनेक्शन सफलतापूर्वक स्थापित होता है तब सक्रिय किया जाता है। इस समय तक ब्रोकरे का CONNACK संदेश प्राप्त हो चुका होता है।
callback onMessage(String $topic, String $content, Client $mqtt)
function (topic, message, packet) {}
जब क्लाइंट Publish संदेश प्राप्त करता है तब सक्रिय किया जाता है
$topicप्राप्त विषय$contentप्राप्त संदेश सामग्री$mqttmqtt क्लाइंट उदाहरण।
callback onError(\Exception $exception = null)
जब कनेक्शन में कोई त्रुटि होती है तब सक्रिय होता है
callback onClose()
जब कनेक्शन बंद होता है तब सक्रिय होता है, चाहे क्लाइंट सक्रिय रूप से इसे बंद करे या सर्वर द्वारा बंद किया जाए, onClose सक्रिय होता है