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 इंटरफ़ेस


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

एक mqtt क्लाइंट उदाहरण बनाएं।

  • $address mqtt सर्वर का पता, स्वरूप '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 संस्करण), डिफ़ॉल्ट MQTT
    • protocol_level: प्रोटोकॉल स्तर, protocol_name यदि MQTT है तो मूल्य 4 , protocol_name यदि MQIsdp है तो मूल्य 3
    • clean_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 : जब कनेक्शन असामान्य रूप से डिस्कनेक्ट और पुन: कनेक्ट होता है, तो क्या पहले के विषयों की फिर से सदस्यता ली जाए, डिफ़ॉल्ट true
    • bindto लोकल पर किस ip और पोर्ट के जरिए ब्रोकरे कनेक्शन शुरू किया जाए, डिफ़ॉल्ट मान '' है
    • ssl SSL विकल्प, डिफ़ॉल्ट false है, यदि true पर सेट किया जाए, तो SSL तरीके से कनेक्ट करें। साथ ही स्थानीय प्रमाणपत्र आदि कॉन्फ़िगर करने के लिए SSL संदर्भ ऐरे पास कर सकते हैं, SSL संदर्भ के लिए देखें https://php.net/manual/en/context.ssl.php
    • debug क्या डिबग मोड सक्षम करना है, डिबग मोड के तहत ब्रोकरे से संचार की विस्तृत जानकारी आउटपुट की जा सकती है, डिफ़ॉल्ट false
    • uri mqtt over websocket का uri पता, आमतौर पर /mqtt

connect()

ब्रोकरे से कनेक्ट करें


publish(String $topic, String $content, [array $options], [callable $callback])

किसी विषय पर एक संदेश प्रकाशित करें

  • $topic विषय
  • $content संदेश
  • $options विकल्पों का ऐरे, जिसमें
    • qos QoS स्तर, डिफ़ॉल्ट 0
    • retain retain चिह्न, डिफ़ॉल्ट false
    • dup पुनः प्रेषण चिह्न, डिफ़ॉल्ट false
  • $callback - function (\Exception $exception = null),(QoS के लिए 0 पर इस सेटिंग का समर्थन नहीं किया जाता)जब त्रुटि होती है या सफलतापूर्वक प्रकाशित होता है, तब सक्रिय किया जाता है, $exception अपवाद वस्तु है, जब कोई त्रुटि नहीं होती है तो $exception null होता है, उसी प्रकार।

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

एक विषय या कई विषयों की सदस्यता लें

  • $topic एक स्ट्रिंग (एक विषय की सदस्यता के लिए) या ऐरे (कई विषयों की सदस्यता के लिए) है,
    जब कई विषयों की सदस्यता ली जाती है, तो $topic में विषय कुंजी हैं, QoS मान के रूप में होता है, जैसे array('topic1'=> 0, 'topic2'=> 1)
  • $options सदस्यता के विकल्प का ऐरे, जिसमें निम्नलिखित सेटिंग्स शामिल हैं:
    • qos QoS स्तर, डिफ़ॉल्ट 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 प्राप्त संदेश सामग्री
  • $mqtt mqtt क्लाइंट उदाहरण।

callback onError(\Exception $exception = null)

जब कनेक्शन में कोई त्रुटि होती है तब सक्रिय होता है


callback onClose()

जब कनेक्शन बंद होता है तब सक्रिय होता है, चाहे क्लाइंट सक्रिय रूप से इसे बंद करे या सर्वर द्वारा बंद किया जाए, onClose सक्रिय होता है

अधिक उदाहरण examples/workerman