workerman/mqtt
MQTT হল একটি ক্লায়েন্ট সার্ভার আর্কিটেকচারের প্রকাশ/সাবস্ক্রাইব মডেল মেসেজ ট্রান্সফার প্রোটোকল, যা ইন্টারনেট অফ থিংসের একটি গুরুত্বপূর্ণ উপাদান হিসেবে পরিণত হয়েছে। এর ডিজাইন ভাবনা হল হালকা, খোলামেলা, সহজ এবং মানসম্পন্ন, যা বাস্তবায়নে সহজ। এই বৈশিষ্ট্যগুলির কারণে এটি অনেক প্রেক্ষাপটে চমৎকার একটি নির্বাচন, বিশেষ করে সীমাবদ্ধ পরিবেশ যেমন মেশিন থেকে মেশিনে যোগাযোগ (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 ওয়েবসকেটের মাধ্যমে
উদাহরণ
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: ক্লায়েন্ট সার্ভারকেHeartbeat পাঠানোর সময়ের ব্যবধান, ডিফল্ট 50 সেকেন্ড, 0 সেট করা হলে হৃৎপিন্ড নিষ্ক্রিয় হবে।client_id: ক্লায়েন্ট আইডি, যদি সেট না করা হয় তবে এটি ডিফল্ট"workerman-mqtt-client-".mt_rand()হবে।protocol_name: প্রোটোকল নাম,MQTT(3.1.1 সংস্করণ) অথবাMQIsdp(3.1 সংস্করণ), ডিফল্ট হলMQTTprotocol_level: প্রোটোকল স্তর,protocol_nameMQTTহলে মান হল4,protocol_nameMQIsdpহলে মান হল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স্থানীয় কোন আইপি এবং পোর্টের মাধ্যমে ব্রোকারের সাথে সংযোগ স্থাপনের জন্য নির্দিষ্ট করা হয়, ডিফল্ট মান হল ''sslssl অপশন, ডিফল্টfalse, যদি সেট করা হয়true, তবে ssl উপায়ে সংযোগ স্থাপন করবে। একসাথে স্থানীয় শংসাপত্র কনফিগার করতে ssl প্রসঙ্গের সমাহারও প্রদান করতে পারে, ssl প্রসঙ্গের জন্য https://php.net/manual/en/context.ssl.php রেফারেন্স করুনdebugকি ডিবাগ মোড সক্রিয় করা হয়েছে, ডিবাগ মোড ব্রোকারের সাথে যোগাযোগের বিস্তারিত তথ্য প্রিন্ট করতে পারে, ডিফল্ট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হল ব্যতিক্রমের অবজেক্ট, যখন কোন ত্রুটি ঘটছে না তখন$exceptionহলnull।
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()
যখন সংযোগটি বন্ধ হয় তখন এটি ট্রিগার হয়, তা জাতীয়ভাবে ক্লায়েন্টকে বন্ধ করতে অনুরোধ করুক অথবা সার্ভার বন্ধ করে দিন।