এমকিউটিটিতে ক্লায়েন্ট-সার্ভার সংযোগ স্থাপনা সম্পর্কে বিভ্রান্তি


19

স্পেসিফিকেশন অনুসারে , এটি সর্বদা ক্লায়েন্ট যাঁর একটি সার্ভারের সাথে সংযোগ স্থাপন করা উচিত।

ক্লায়েন্ট:

একটি প্রোগ্রাম বা ডিভাইস যা এমকিউটিটি ব্যবহার করে। একটি ক্লায়েন্ট সর্বদা সার্ভারের সাথে নেটওয়ার্ক সংযোগ স্থাপন করে । এটা হতে পারে

  • অন্যান্য ক্লায়েন্টদের আগ্রহী হতে পারে এমন অ্যাপ্লিকেশন বার্তা প্রকাশ করুন।

  • অ্যাপ্লিকেশন বার্তাগুলি অনুরোধ করতে সাবস্ক্রাইব করুন যা এটি আগ্রহী।

  • অ্যাপ্লিকেশন বার্তাগুলির জন্য একটি অনুরোধ অপসারণের সদস্যতা বাতিল করুন।

  • সার্ভার থেকে সংযোগ বিচ্ছিন্ন করুন।

এবং যদি এই ক্লায়েন্টটি কোনও অ্যাপ্লিকেশন বার্তার জন্য সাবস্ক্রাইব করে, তবে সার্ভারের সেই নির্দিষ্ট বার্তাগুলি এই বিশেষ ক্লায়েন্টের কাছে ফরোয়ার্ড করা উচিত।

সার্ভার:

এমন একটি প্রোগ্রাম বা ডিভাইস যা গ্রাহকরা অ্যাপ্লিকেশন বার্তাগুলি এবং সাবস্ক্রিপশন তৈরি করেছে এমন ক্লায়েন্টদের মধ্যে মধ্যস্থতাকারী হিসাবে কাজ করে। একটি সার্ভার

  • ক্লায়েন্টদের কাছ থেকে নেটওয়ার্ক সংযোগ গ্রহণ করে।

  • ক্লায়েন্টদের দ্বারা প্রকাশিত অ্যাপ্লিকেশন বার্তা গ্রহণ করে।

  • প্রক্রিয়াগুলি গ্রাহকদের কাছ থেকে অনুরোধ সাবস্ক্রাইব এবং সাবস্ক্রাইব করুন।

  • ফরোয়ার্ড অ্যাপ্লিকেশন বার্তাগুলি যা ক্লায়েন্টের সাবস্ক্রিপশনের সাথে মেলে

এর অর্থ কি যদি কোনও ক্লায়েন্ট সাবস্ক্রাইব করে তবে বেশিরভাগ সময় কোনও তথ্য প্রবাহ না থাকা সত্ত্বেও সাবস্ক্রিপশনটি বৈধ থাকাকালীন এটি সার্ভারের সাথে সংযুক্ত থাকে?

আমি এই সিদ্ধান্তে পৌঁছেছি কারণ সাবস্ক্রিপশনের পরে যদি ক্লায়েন্টটি সংযোগ বিচ্ছিন্ন করে, তবে কোনও সার্ভার এটিতে বার্তা ফরোয়ার্ড করতে পারে না কারণ এটি ক্লায়েন্ট যা সংযোগ স্থাপন করবে। তবে কখন এটি পুনরায় প্রতিষ্ঠিত করতে হবে তা তা জানতে পারবে না।

উত্তর:


11

এর অর্থ কী যদি কোনও ক্লায়েন্ট সাবস্ক্রাইব করে তবে বেশিরভাগ সময় কোনও তথ্য প্রবাহ না থাকলেও সাবস্ক্রিপশনটি বৈধ থাকাকালীন এটি সার্ভারের সাথে সংযুক্ত থাকে?

হ্যাঁ, সংযোগটি তৈরি হয়ে গেলে ক্লায়েন্ট বার্তাগুলির জন্য অপেক্ষা করবে, তবে এটি নিয়মিত রক্ষণশীল মানের ভিত্তিতে সার্ভারে পিং বার্তা প্রেরণ করবে। যদি কোনও পিং বার্তা সার্ভারটি না পেয়ে থাকে তবে তা আপনাকে সংযোগ বিচ্ছিন্ন করতে পারে।

সাবস্ক্রিপশনের পরে যদি ক্লায়েন্ট সংযোগ বিচ্ছিন্ন করে, তবে কোনও সার্ভার এতে বার্তা ফরোয়ার্ড করতে পারে না কারণ এটি ক্লায়েন্ট যা সংযোগ স্থাপন করবে।

যদি ক্লায়েন্টটি সংযোগ বিচ্ছিন্ন হয় তবে হ্যাঁ, এটি বার্তা গ্রহণ করবে না, তবে এমকিউটিটিতে এমন বৈশিষ্ট্য রয়েছে যা এর চারপাশে কাজ করে।

যদি ক্লায়েন্টটি 'ক্লিন সেশন' পতাকাটি মিথ্যাতে সেট করে সার্ভারের সাথে সংযুক্ত হয়, তবে সার্ভারটি সেই ক্লায়েন্ট আইডির সাবস্ক্রিপশনটি মনে রাখবে। ক্লায়েন্টটি পুনরায় সংযোগ স্থাপন করার পরে, এটি পুনরায় সাবস্ক্রাইব করার প্রয়োজন হবে না কারণ সার্ভারটি এটি মনে রাখে।

তদ্ব্যতীত, আপনি কিউওএস স্তর 1 বা 2 ব্যবহার করে সাবস্ক্রাইব করতে পারেন Level এইভাবে, এমনকি যদি ক্লায়েন্ট সংযোগ বিচ্ছিন্ন করে এবং পুনরায় সংযোগ করে তবে তারা এখনও সমস্ত প্রকাশিত বার্তা গ্রহণ করবে।

এই সাইটটির এমকিউটিটি প্রোটোকল ব্যাখ্যা করার জন্য কিছু ভাল সংস্থান রয়েছে।


9

এর অর্থ কী যদি কোনও ক্লায়েন্ট সাবস্ক্রাইব করে তবে বেশিরভাগ সময় কোনও তথ্য প্রবাহ না থাকলেও সাবস্ক্রিপশনটি বৈধ থাকাকালীন এটি সার্ভারের সাথে সংযুক্ত থাকে?

হ্যাঁ, আপনার ক্লায়েন্ট বার্তাগুলির জন্য অপেক্ষা করবে।

... যদি ক্লায়েন্ট সাবস্ক্রিপশনের পরে সংযোগ বিচ্ছিন্ন করে দেয় তবে কোনও সার্ভার বার্তা ফরোয়ার্ড করতে পারে না

আপনাকে সংযোগ বিচ্ছিন্ন করতে হবে (বিশেষত ব্যাটারি চালিত ডিভাইসে)। এটি এমকিটিটিটির " শেষ উইল এবং টেস্টামেন্ট " বৈশিষ্ট্যটি ব্যবহার করে করা যেতে পারে : যখন কোনও ডিভাইস সংযোগ বিচ্ছিন্ন করে এটি একটি শেষ বার্তা প্রেরণ করবে।


1

আপনার সংযোগ এবং সেশনের পার্থক্য করা উচিত।

সমস্ত কিছু অধিবেশন দ্বারা সংজ্ঞায়িত করা হয়। যখন এমকিউটিটি সংযোগটি প্রথম বার ব্রোকারকে অনুমোদিত করা হয়, ব্রোকার সাধারণত এই ক্লায়েন্ট-আইডি সংযোগের প্যারামিটারের ভিত্তিতে এই সংযোগের জন্য সেশন তৈরি করে।

মিউকিটিটি ৩.১.১ প্রোটোকলে (বর্তমানে বেশিরভাগ ক্লায়েন্ট / ব্রোকারদের মধ্যে ডিফল্ট) সংযোগ চলাকালীন আপনি পরিষ্কার = সত্য বা পরিষ্কার = মিথ্যা পতাকা নির্দিষ্ট করতে পারেন। যদি পরিষ্কার = সত্য হয় তবে ব্রোকার স্বয়ংক্রিয়ভাবে নতুন সেশন তৈরি করবে এবং সংযোগটি ভাঙ্গা / বন্ধ হয়ে গেলে এটি বন্ধ করে দেবে। যদি পরিষ্কার = মিথ্যা হয় তবে ব্রোকারটি অধিবেশন বজায় রাখবে এবং ক্লায়েন্ট সংযোগ বিচ্ছিন্ন হয়ে গেলেও সেখানে ইভেন্টগুলি (কোনও ধরণের সেশন স্টোরেজ হিসাবে) সরবরাহ করবে। এটি দালালদের বাস্তবায়নের উপর নির্ভর করে যদি এটি পরিষ্কার = মিথ্যা সেশনটি অনুমতি দেয় এবং এই জাতীয় অধিবেশনটির সর্বাধিক টিটিএল কী থাকে।

এমকিউটিটি 5.0 প্রোটোকলে (খুব তাজা, তবে দৃষ্টিভঙ্গি) ক্লায়েন্টের পক্ষ থেকে সেশন টিটিএল নির্দিষ্ট করা বা সংযোগ স্থাপনের পরে এটি পরিবর্তন করাও সম্ভব। অস্থির WAN সংযোগগুলির জন্য এটি বেশ কার্যকর (

ক্লায়েন্ট দৃষ্টিকোণ থেকে আমি যতদূর জানি বর্তমানে MQTT 5.0 প্রোটোকল সঙ্গে পাইথন ব্যবহার করা যেতে পারে gmqtt এবং জাভাস্ক্রিপ্ট মধ্যে mqtt.js

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.