WebSocket প্রোটোকল ( WS ) একটি স্থায়ী সংযোগের মাধ্যমে একটি ব্রাউজার এবং একটি সার্ভারের মধ্যে ডেটা বিনিময় করার ক্ষমতা প্রদান করে। সংযোগ বিচ্ছিন্ন না করে এবং অতিরিক্ত HTTP অনুরোধ না করে "প্যাকেট" আকারে উভয় দিকেই ডেটা প্রেরণ করা হয়।

ওয়েবসকেট ধ্রুবক যোগাযোগ পরিষেবার জন্য ভাল, যেমন চ্যাট রুম, অনলাইন গেমস, রিয়েল-টাইম মার্কেটপ্লেস ইত্যাদি।

একটি উদাহরণ হিসাবে, আসুন একটি সাধারণ চ্যাটের জন্য একটি ব্যাকএন্ড তৈরি করি। মৌলিক বৈশিষ্ট্যগুলি প্রদান করা প্রয়োজন:

  1. চ্যাটে বার্তা পাঠানো হচ্ছে।
  2. বার্তাটির লেখকত্ব নির্ধারণ করা।
  3. কর্ম বিজ্ঞপ্তি। উদাহরণস্বরূপ, একজন নতুন সদস্য চ্যাটে যোগ দিচ্ছেন, চ্যাট ত্যাগ করছেন, টাইপিং নির্দেশক (কেউ টাইপ করছেন...)

ডাটাবেস মডেল

ডাটাবেসের জন্য একটি মডেল তৈরি করে শুরু করা যাক। এমনকি যদি আমরা প্রাথমিকভাবে ডাটাবেসে বার্তা এবং চিঠিপত্রের ইতিহাস সঞ্চয় করার পরিকল্পনা না করি, তবুও বার্তা এবং বিজ্ঞপ্তি পাঠানোর কাঠামোর জন্য আমাদের একটি মডেল প্রয়োজন।

আসুন একটি জেনেরিক chat_event মডেল তৈরি করি যাতে রয়েছে:

  1. ব্যবহারকারীর সাথে সম্পর্ক। যে কোন বার্তার মধ্যে এটি কোন ব্যবহারকারীকে নির্দেশ করে সে সম্পর্কে তথ্য অন্তর্ভুক্ত করে।
  2. 4টি সম্ভাব্য বিকল্প সহ Type (enum) ক্ষেত্র। Connected এবং Disconnected - একটি ব্যবহারকারী সংযুক্ত বা সংযোগ বিচ্ছিন্ন হলে বিজ্ঞপ্তিগুলির জন্য৷ Typing - তথ্য জানাতে যে ব্যবহারকারী বর্তমানে একটি নতুন বার্তা লিখছেন। Message - একটি আদর্শ পাঠ্য বার্তার জন্য।
  3. Message (text) - বার্তার পাঠ্য।


এন্ডপয়েন্ট কনফিগারেশন

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

আমরা একটি শেষবিন্দু বিভাগ প্রয়োজন. সেখানে আমরা উপযুক্ত বিকল্প - WebSocket Endpoint নির্বাচন করে একটি নতুন এন্ডপয়েন্ট তৈরি করি।


WebSockets-এর জন্য অনুরোধ পদ্ধতির কোন পছন্দ নেই - এটি সর্বদা GET হয়। আসুন একটি সাধারণ URL উল্লেখ করি - /chat/ এবং একই নামে এটির জন্য একটি গ্রুপ তৈরি করি।

এর পরে, আমাদের ভেরিয়েবল তৈরি করতে হবে যা ওয়েবসকেটের মধ্যে ডেটা বিনিময় বিন্যাস নির্ধারণ করবে।

  • Client-to-Server । স্ট্যান্ডার্ড ব্যবসায়িক প্রক্রিয়ার জন্য ইনকামিং প্যারামিটারের অনুরূপ। আমাদের উদাহরণে, আমরা একটি সাধারণ পাঠ্য পরিবর্তনশীল বার্তা তৈরি করব (আমরা সার্ভারে সাধারণ পাঠ্য বার্তা পাঠাব)।
  • Server-to-Client এখানে সার্ভার বার্তার জন্য ভেরিয়েবল তৈরি করা হয়, সার্ভার থেকে ব্যবহারকারীর কাছে ডেটা পাঠানো হয়। মনে রাখবেন যে এটি একটি ব্যবহারকারীর অনুরোধের প্রতিক্রিয়া হিসাবে একই নয়। এবং যদিও এটি ব্যবহারকারীর ক্রিয়াকলাপের প্রতিক্রিয়া হিসাবে প্রেরণ করা যেতে পারে, তবে এটি প্রায়শই কিছু বাহ্যিক ঘটনার কারণে ঘটে। আমাদের উদাহরণে, সার্ভার চ্যাটের সমস্ত ইভেন্টের বিজ্ঞপ্তি পাঠাবে, তাই আমরা chat_event মডেলটিকে একটি পরিবর্তনশীল হিসাবে সেট করব।


ভেরিয়েবল তৈরি করার পরে, আপনি মূল জিনিসটিতে যেতে পারেন - ওয়েবসকেটের যুক্তি তৈরি করা। এটি ট্রিগারগুলির উপর ভিত্তি করে তৈরি করা হয় যখন একটি WebSocket এ একটি নতুন বার্তা প্রাপ্ত হয়, সেইসাথে যখন একটি সংযোগ স্থাপন করা হয় বা সংযোগ বিচ্ছিন্ন হয়।


একটি ব্যবসায়িক প্রক্রিয়া তৈরি করা

আসুন connect ট্রিগার ব্যবহার করি এবং এর জন্য একটি ব্যবসায়িক প্রক্রিয়া তৈরি করি। ব্যবহারকারী WebSocket এর সাথে একটি সংযোগ স্থাপন করার মুহুর্তে এটি চালু করা হবে এবং এর কাজ হবে সমস্ত সংযুক্ত ব্যবহারকারীদের কাছে এই সম্পর্কে একটি বিজ্ঞপ্তি পাঠানো।

মনে রাখবেন যে স্টার্ট ব্লকে দুটি প্যারামিটার রয়েছে: User ID এবং Connection ID । এইভাবে, আপনি শুধুমাত্র অবিলম্বে সংযোগ স্থাপনকারী ব্যবহারকারীকে নির্ধারণ করতে পারবেন না কিন্তু এই সংযোগের জন্য একটি অনন্য শনাক্তকারীও পাবেন। ভবিষ্যতে, এই শনাক্তকারী ব্যবহার করা যেতে পারে, উদাহরণস্বরূপ, লক্ষ্যযুক্ত বার্তা পাঠাতে বা জোর করে সংযোগটি বন্ধ করতে।

ব্যবসায়িক প্রক্রিয়ার সমস্ত প্রয়োজনীয় পদক্ষেপগুলি তৈরি করুন:

  1. Make User । ইউজার মডেল তৈরি করতে প্রারম্ভিক প্যারামিটার User ID ব্যবহার করা যাক।
  2. Make chat_event । একটি ইভেন্ট বিজ্ঞপ্তি মডেল তৈরি করুন। আমরা পূর্ববর্তী ধাপে তৈরি মডেল ব্যবহার করে ব্যবহারকারীর সাথে এটি সংযুক্ত করব এবং ইভেন্টের ধরনটি নির্বাচন করব এবং Type = Connected সেট করব। আমরা বার্তা প্যারামিটার ব্যবহার করি না যেহেতু, এই ক্ষেত্রে, এটি একটি বার্তা নয় যা প্রেরণ করা হয় কিন্তু একটি সংযোগ বিজ্ঞপ্তি।
  3. WSS Connections /chat/ । এই ব্লকটি ব্যবহার করে, আমরা সমস্ত সক্রিয় ওয়েবসকেট সংযোগের একটি তালিকা পাব।
  4. For Each Loop । আমরা সংযোগ অ্যারেকে লুপ প্যারামিটার হিসাবে ব্যবহার করি, প্রতিটি সংযুক্ত ব্যবহারকারীকে বিজ্ঞপ্তি পাঠাই।
  5. Expand WebSocket ConnectionConnection ID পেতে সংযোগ তথ্য প্রসারিত করুন।
  6. WSS Send /chat/ । বিজ্ঞপ্তি পাঠানোর জন্য আমরা Connection ID এবং জেনারেট করা chat_event ব্যবহার করি।


ওয়েবসকেট পরীক্ষা করার জন্য পোস্টম্যান ব্যবহার করে

এই পর্যায়ে, WebSocket, যদিও এর উল্লেখযোগ্য কার্যকারিতা নেই, ইতিমধ্যেই চালু আছে এবং অনুশীলনে পরীক্ষা করা যেতে পারে। এটি করার জন্য, আপনি যে কোনও সরঞ্জাম ব্যবহার করতে পারেন যা আপনাকে WebSockets এর সাথে কাজ করতে দেয়। আসুন একটি উদাহরণ হিসাবে Postman সাথে এটি কীভাবে করবেন তা একবার দেখে নেওয়া যাক।

New button ক্লিক করুন এবং WebSocket Request নির্বাচন করুন


আপনাকে WebSocket-এর URL উল্লেখ করতে হবে। এটি Swagger ব্যবহার করে পাওয়া যাবে, যেখানে WebSocket বাকি শেষ পয়েন্টগুলির সাথে তালিকায় রয়েছে।


স্ট্যান্ডার্ড অনুরোধের বিপরীতে, WebSockets wss প্রোটোকল ব্যবহার করে কাজ করে, তাই আপনাকে https দিয়ে wss প্রতিস্থাপন করতে হবে। ফলাফল একটি অনুরূপ URL হতে হবে: wss://qvlxglh-app.apms.io/api/chat/

এরপরে, আপনাকে অনুরোধে একটি প্রমাণীকরণ টোকেন যোগ করতে হবে কারণ সংযোগটি বেনামী হতে পারে না। আপনাকে Bearer lBCiunRWg6BfogDrLml4jrC4iJiWucKo মতো একটি মান সহ একটি Authorization শিরোনাম তৈরি করতে হবে। lBCiunRWg6BfogDrLml4jrC4iJiWucKo-এর পরিবর্তে, আপনাকে আপনার নিজস্ব টোকেন সন্নিবেশ করতে হবে, যা অনুমোদনের ( POST /auth/ endpoint) ফলে পাওয়া যেতে পারে।


যদি সবকিছু সঠিকভাবে করা হয়, তাহলে Connect বোতামে ক্লিক করে, একটি সংযোগ স্থাপন করা হবে এবং সার্ভারের দিক থেকে প্রথম বার্তাটি প্রাপ্ত হবে, পাঠানোর জন্য ব্যবসায়িক প্রক্রিয়া যা আগে তৈরি করা হয়েছিল।


একই সময়ে, আপনি নিশ্চিত করতে পারেন যে সার্ভার থেকে বার্তা প্রাপ্তি শুধুমাত্র আমাদের কাছ থেকে কিছু অনুরোধের প্রতিক্রিয়া হিসাবে ঘটে না। অন্যান্য ব্যবহারকারীদের কর্ম তাদের কারণ হতে পারে. এটি পরীক্ষা করার জন্য, আপনি অন্য ব্যবহারকারীর প্রমাণীকরণ টোকেন ব্যবহার করে অন্য ট্যাবে একটি সংযোগ স্থাপন করতে পারেন। সার্ভার থেকে একটি বার্তা এটিকে জানিয়ে একটি সক্রিয় সংযোগ সহ সমস্ত ট্যাবে পাঠানো হবে৷

বার্তা পাঠানোর জন্য ব্যবসায়িক প্রক্রিয়া

এখন আপনি WebSocket-এর ক্ষমতা বিকাশ চালিয়ে যেতে পারেন এবং বার্তা পাঠানোর জন্য একটি ব্যবসায়িক প্রক্রিয়া তৈরি করতে পারেন। যাইহোক, আপনি এখন বার্তা পাঠাতে পারেন, কিন্তু প্রথমে যুক্তি তৈরি না করে, এর কোন মানে হয় না, বার্তাটি কোন প্রতিক্রিয়ার দিকে নিয়ে যাবে না। অতএব, আসুন এন্ডপয়েন্ট সেটিংসে ফিরে যাই এবং receive ট্রিগারের জন্য একটি ব্যবসায়িক প্রক্রিয়া তৈরি করি।

অনেক উপায়ে, এটি পূর্ববর্তী ব্যবসায়িক প্রক্রিয়ার অনুরূপ হবে। একটি বার্তা প্রাপ্ত হলে, এটি একটি chat_event তৈরি করতে এবং সমস্ত চ্যাট অংশগ্রহণকারীদের কাছে এটি সম্পর্কে বিজ্ঞপ্তি পাঠাতে হবে৷ পার্থক্য হল বার্তাটি নিজেই chat_event এ যোগ করতে হবে এবং বার্তাটির লেখককে মেইলিং তালিকায় অন্তর্ভুক্ত করার প্রয়োজন নেই৷

ব্যবসায়িক প্রক্রিয়ার প্রথম অংশে একই ব্লক ব্যবহার করা হয়। Make chat_event ব্লকে, আপনাকে type = message সেট করতে হবে এবং স্টার্ট ব্লক থেকে বার্তাটি নিজেই সংযুক্ত করতে হবে।


লুপে, আমাদের চেক করতে হবে (Equal ব্লক) এবং বার্তা পাঠাতে হবে শুধুমাত্র যদি রিসিভারের সংযোগ আইডি প্রেরকের সংযোগ আইডির সাথে মেলে না ( If-Else = False )।


আপনি ফলাফল প্রকাশ এবং পরীক্ষা শুরু করতে পারেন. নোট করুন যে বার্তাটি নিজেই JSON ফর্ম্যাটে, তাই বার্তা ভেরিয়েবল ব্যবহার করার সময়, এটি এইভাবে দেখাবে:

{"message":"Some text here"}

উদাহরণে, আপনি দেখতে পাচ্ছেন যে আপনি একটি চ্যাট সংযোগ বিজ্ঞপ্তি পেয়েছেন, আপনার নিজস্ব বার্তা পাঠান ( Hi! ), এবং একটি প্রতিক্রিয়া পান ( Glad to see you! )


এটি WebSockets ব্যবহার করে চ্যাটের জন্য মৌলিক ব্যাকএন্ড তৈরি সম্পূর্ণ করে। আপনি ফ্রন্ট-এন্ড তৈরি করা শুরু করতে পারেন এবং আপনার নিজস্ব রিয়েল-টাইম মেসেজিং অ্যাপ তৈরি করতে পারেন।

Was this article helpful?

AppMaster.io 101 ক্র্যাশ কোর্স

10 মডিউল
2 সপ্তাহ

কোথা থেকে শুরু করবেন নিশ্চিত নন? নতুনদের জন্য আমাদের ক্র্যাশ কোর্সে যান এবং A থেকে Z পর্যন্ত AppMaster অন্বেষণ করুন।

কোর্স শুরু করুন
Development it’s so easy with AppMaster!

আরো সাহায্য প্রয়োজন?

আমাদের বিশেষজ্ঞদের সাহায্যে যেকোনো সমস্যা সমাধান করুন। সময় বাঁচান এবং আপনার অ্যাপ্লিকেশন তৈরিতে ফোকাস করুন।

headphones

যোগাযোগ সমর্থন

আপনার সমস্যা সম্পর্কে আমাদের বলুন, এবং আমরা আপনাকে একটি সমাধান খুঁজে বের করব।

message

সম্প্রদায় চ্যাট

আমাদের চ্যাটে অন্যান্য ব্যবহারকারীদের সাথে প্রশ্ন নিয়ে আলোচনা করুন।

কমিউনিটিতে যোগ দিন