Skip to main content

Command Palette

Search for a command to run...

ওয়েব সকেট কমিউনিকেশন প্রটোকল

Published
•3 min read•View as Markdown
ওয়েব সকেট কমিউনিকেশন প্রটোকল

ওয়েব সকেট কি?

ওয়েব সকেট একটি কমিউনিকেশন প্রটোকল। যেটি ক্লায়েন্ট এবং সার্ভারের মাঝে ফুল ডুপ্লেক্স কানেকশন এস্টাবলিশ করার মাধ্যমে একটি একক কানেকশন তৈরি করে। যেখানে HTTP প্রটোকল বারবার রিকুয়েস্ট রেসপন্সের মাধ্যমে তথ্য আদান-প্রদান করে। সেখানে ওয়েব সকেট একটি নিরবিচ্ছিন্ন কানেকশন এর মাধ্যমে বাই ডিরেকশনাল তথ্য আদান প্রদান করতে পারে। ওয়েব সকেট এর মাধ্যমে সার্ভার কোন ধরনের রিকুয়েস্ট করা ছাড়াই ক্লায়েন্টকে তথ্য পাঠাতে পারে। যার ফলে একটা স্মুথ রিয়েল টাইম কমিউনিকেশন সম্ভব হয়। যেমন আমাদের বর্তমান ব্যবহৃত চ্যাট অ্যাপ্লিকেশন, নোটিফিকেশন ইত্যাদি।

ওয়েব সকেট কিভাবে কাজ করে ?

১. ইনিশিয়াল HTTP হ্যান্ডসেকঃ

  • ওয়েব সকেট প্রাথমিক হ্যান্ডশেকের মাধ্যমে শুরু হয়, যেখানে ক্লায়েন্ট সার্ভারে একটি HTTP রিকুয়েস্ট পাঠায় ওয়েব সকেট কানেকশন স্টাবলিশ করার জন্য। যেটাতে একটি স্পেশাল HTTP হেডারের মাধ্যমে রিকুয়েস্ট করা হয়।

  • যদি সার্ভার ওয়েব সকেট সাপোর্ট করে তাহলে রিকোয়েস্ট একসেপ্ট করে ওয়েব সকেটে সুইচ করে এবং ১০১ স্ট্যাটাস কোড পাঠায়।

২. পার্সিস্টেন্ট কানেকশন (নিরবিচ্ছিন্ন সংযোগ)ঃ

  • হ্যান্ডসেক সাকসেসফুল হলে ওয়েব সকেট কানেকশন ট্যাবলিশ হয়, এবং একটি নিরবিচ্ছিন্ন TCP কানেকশন ওপেন হয় ক্লায়েন্ট এবং সার্ভার এর মধ্যে।

  • এই কানেকশনটি ওপেন থাকে এবং ক্লায়েন্ট ও সার্ভারের মধ্যে যেকোনো সময় ডাটা আদান প্রদান করা যায়, তার জন্য কোন আর ধরনের কোন কানেকশন রিয়েস্টাবলিশের প্রয়োজন হয় না। অথবা অন্য কোন রিকোয়েস্ট করতে হয় না। এই কানেকশনটি ততক্ষণ স্টাবলিশ থাকে যদি না ক্লায়েন্ট অথবা সার্ভার স্পষ্টতো কেউ এটিকে ক্লোজ না করে।

৩. বাই ডিরেকশনাল কানেকশন (দ্বিমুখী যোগাযোগ)ঃ

  • কানেকশন এস্টাবলিশ হওয়ার পরে ক্লায়েন্ট এবং সার্ভার উভয় দিকে ডাটা স্বাধীনভাবে আদান প্রদান করা যায়। যেখানে HTTP তে ক্লায়েন্ট একটি রিকুয়েস্ট করলে সার্ভার রেসপন্সের জন্য অপেক্ষা করতে হয়।

৪. ক্লোজিং দা কানেকশন (কানেকশন বন্ধ করণ)ঃ

  • ক্লায়েন্ট অথবা সার্ভার উভয়ই যেকোনো সময় কানেকশন বন্ধ করে দিতে পারে। যখন একটি বন্ধ হয় তখন বিপরীত পক্ষকে একটি “close frame” পাঠানোর মাধ্যমে ইনফর্ম করা হয়।

ওয়েব সকেট প্রটোকলঃ

প্রটোকলঃ ওয়েব সকেট কানেকশন স্টাবলিশ করার জন্য ওয়েব সকেট প্রটোকল ব্যবহার করে। আবার ওয়েব সকেট প্রটোকল নিজেই TCP(Transmission Control Protocol)এর উপর চলে।

পোর্টঃ

  • ওয়েব সকেট আনসিকিউর (ws://) কানেকশনের জন্য port:80 ব্যবহার করে।

  • এবং সিকিওর (wss://) কানেকশনের জন্য port:443 ব্যবহার করে। যেখানে ডাটা এনক্রিপশনের জন্য TLS(Transport Layer Security) ব্যবহার করা হয় যা অনেকটা HTTPS এর মত।

ওয়েব সকেট ব্যবহারের সুবিধাঃ

লো লেটেন্সিঃ যেহেতু এটি একটি নিরবিচ্ছিন্ন কানেকশন স্টাবলিশ করার মাধ্যমে তথ্য আদান প্রদান করে, তাই এখানে কোন ধরনের কোন লেটেন্সি থাকে না। যে কারণে বারবার HTTP রিকুয়েস্ট করার প্রয়োজন হয় না।

ফুল ডুপ্লেক্সঃ ওয়েব সকেট কমিউনিকেশন বাই ডিরেকশনাল, যেখানে ক্লায়েন্ট এবং সার্ভার একই সাথে ডাটা আদান প্রদান করতে পারে।

লো ওভারহেডঃ ওয়েব সকেটের ওভারহেড প্রচলিত HTTP থেকে অনেক কম। যা এটাকে দ্রুত এবং নিরবিচ্ছিন্ন রিয়েল টাইম ডাটা এক্সচেঞ্জে সহায়তা করে।

রিয়েল টাইমঃ ওয়েব সকেট রিয়েল টাইম এপ্লিকেশন এর জন্য সবথেকে আইডিয়াল।

ওয়েব সকেট সাধারণত চ্যাট অ্যাপ্লিকেশন, লাইভ নোটিফিকেশন, অনলাইন গেমিং, কোলাবরেটিভ অ্যাপ্লিকেশন, লাইভ ফিড ইত্যাদি অ্যাপ্লিকেশনে ব্যবহৃত হয়।

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

More from this blog

Redis Data Structure

অনেকেই Redis-কে শুধু একটি key-value ডেটাবেস হিসেবে মনে করেন, কিন্তু এটি তার চেয়ে অনেক বেশি কিছু। Redis আমাদের এমন কিছু শক্তিশালী ডেটা স্ট্রাকচার দেয়, যা দিয়ে অনেক জটিল কাজ খুব সহজে এবং দ্রুত সমাধান করা যায়। চলুন, এক এক করে পরিচিত হওয়া যাক এদের সাথে। ...

Aug 18, 20253 min read4
Redis Data Structure

Redis এর প্রয়োজনীয়তা

Redis: কেন এটি শুধু একটি ডেটাবেস নয়, আপনার অ্যাপ্লিকেশনের সুপারপাওয়ার! আপনি যদি একজন ডেভেলপার হয়ে থাকেন, তাহলে নিশ্চয়ই চাইবেন আপনার অ্যাপ্লিকেশনটি হোক দ্রুত, নির্ভরযোগ্য এবং স্কেলেবল। আগের পর্বে আমরা Redis কী তা জেনেছি। আজকে আমরা দেখব, কেন Redis আধুন...

Aug 17, 20254 min read2
Redis এর প্রয়োজনীয়তা

Redis: A speedy In-memory Database system

আমরা প্রতিদিন অসংখ্য তথ্য নিয়ে কাজ করি, যেমন—মোবাইলে কন্টাক্ট নাম্বার, ই-কমার্স সাইটে কেনাকাটার তালিকা, বা সোশ্যাল মিডিয়ায় বন্ধুদের পোস্ট। এই সব তথ্য কোথাও না কোথাও জমা হয়। কিন্তু সব তথ্যের ধরন বা ব্যবহারের প্রয়োজনীয়তা একরকম নয়। কিছু তথ্য আছে ...

Aug 16, 20253 min read1
Redis: A speedy In-memory Database system

Class "static" Member in OOP

প্রোগ্রামিং-এর জগতে, ডেটা এবং ফাংশনগুলো কীভাবে মেমোরিতে রাখা হবে, তার উপর আমাদের কোডের কার্যকারিতা, speed এবং মেমোরি usage অনেকাংশে নির্ভর করে। এমন অনেক সময় আসে যখন আমরা চাই কিছু ডেটা বা ফাংশন যেনো কোনো নির্দিষ্ট ক্লাসের সব অবজেক্টের জন্য একটাই কপি ...

Aug 15, 20254 min read2
Class "static" Member in OOP

Object Oriented Programming Part -1

আপনি সফটওয়্যার বানানোর সময় প্রায়ই দু’টো বড় চ্যালেঞ্জের সম্মুখীন হবেন— প্রথম হলো complexity আর দ্বিতীয় হলো code changes। কোড যত বড় হয়, কোড বোঝো, চেঞ্জ করা, bug ফিক্স করা তত কঠিন হতে থাকে। Object-Oriented Programming (OOP) এমন এক programming style যেখা...

Aug 13, 20255 min read1
Object Oriented Programming Part -1

Thinking and Doing

22 posts