workerman/mqtt

MQTT হল একটি ক্লায়েন্ট সার্ভার আর্কিটেকচারের প্রকাশ/সাবস্ক্রাইব মডেল মেসেজ ট্রান্সফার প্রোটোকল, যা ইন্টারনেট অফ থিংসের একটি গুরুত্বপূর্ণ উপাদান হিসেবে পরিণত হয়েছে। এর ডিজাইন ভাবনা হল হালকা, খোলামেলা, সহজ এবং মানসম্পন্ন, যা বাস্তবায়নে সহজ। এই বৈশিষ্ট্যগুলির কারণে এটি অনেক প্রেক্ষাপটে চমৎকার একটি নির্বাচন, বিশেষ করে সীমাবদ্ধ পরিবেশ যেমন মেশিন থেকে মেশিনে যোগাযোগ (M2M) এবং ইন্টারনেট অফ থিংস (IoT) পরিবেশের জন্য।

workerman\mqtt হল একটি workerman ভিত্তিক অ্যাসিঙ্ক্রোনাস mqtt ক্লায়েন্ট লাইব্রেরি, যা mqtt প্রোটোকলের বার্তা গ্রহণ বা প্রেরণের জন্য ব্যবহৃত হতে পারে। QoS 0QoS 1QoS 2 সমর্থন করে। MQTT 3.1 3.1.1 5 সংস্করণ সমর্থন করে।

প্রকল্পের ঠিকানা

https://github.com/walkor/mqtt

ইনস্টলেশন

composer require workerman/mqtt

সমর্থন

  • MQTT
  • MQTT5
  • MQTT ওয়েবসকেটের মাধ্যমে

উদাহরণ

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: ক্লায়েন্ট সার্ভারকেHeartbeat পাঠানোর সময়ের ব্যবধান, ডিফল্ট 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: সেশন পরিষ্করণ, ডিফল্ট হল truefalse সেট করলে QoS 1 এবং QoS 2 স্তরের অফলাইন বার্তা গ্রহণ করতে পারবেন।
    • reconnect_period: পুনঃসংযোগের সময়ের ব্যবধানে, ডিফল্ট 1 সেকেন্ড, 0 মানে পুনঃসংযোগ হয় না।
    • connect_timeout: mqtt সংযোগের জন্য সময় সীমা, ডিফল্ট 30 সেকেন্ড।
    • username: ব্যবহারকারীর নাম, ঐচ্ছিক।
    • password: পাসওয়ার্ড, ঐচ্ছিক।
    • will: লেগেসি বার্তা, যখন ক্লায়েন্টের সংযোগ বিছিন্ন হয় ব্রোকার স্বয়ংক্রিয়ভাবে অন্যান্য ক্লায়েন্টকে লেগেসি বার্তা পাঠাবে। ফরম্যাট:
      • topic: বিষয়
      • content: বিষয়বস্তু
      • qos: QoS স্তর
      • retain: retain পতাকা
    • resubscribe : সংযোগ ব্যত্যয় ঘটে এবং পুনঃসংযোগ হলে, পূর্ববর্তী বিষয় আবার সাবস্ক্রাইব করেব কি না, ডিফল্ট true
    • bindto স্থানীয় কোন আইপি এবং পোর্টের মাধ্যমে ব্রোকারের সাথে সংযোগ স্থাপনের জন্য নির্দিষ্ট করা হয়, ডিফল্ট মান হল ''
    • 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
    • retainretain পতাকা, ডিফল্ট 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()

যখন সংযোগটি বন্ধ হয় তখন এটি ট্রিগার হয়, তা জাতীয়ভাবে ক্লায়েন্টকে বন্ধ করতে অনুরোধ করুক অথবা সার্ভার বন্ধ করে দিন।

আরো উদাহরণ examples/workerman