Web Sockets সংযোগ স্থাপন প্রক্রিয়া একটি বিশেষ ধাপের মাধ্যমে সম্পন্ন হয়, যেখানে প্রথমে HTTP হ্যান্ডশেক ব্যবহৃত হয় এবং তারপর Web Sockets প্রোটোকলে রূপান্তরিত হয়ে স্থায়ী কানেকশন তৈরি করা হয়। নিচে Web Sockets সংযোগ স্থাপনের বিস্তারিত প্রক্রিয়া আলোচনা করা হলো।
১. ক্লায়েন্ট থেকে HTTP রিকোয়েস্ট
ক্লায়েন্ট যখন Web Socket কানেকশন স্থাপন করতে চায়, তখন প্রথমে HTTP রিকোয়েস্ট পাঠায়। এই রিকোয়েস্টটি সাধারণ HTTP রিকোয়েস্টের মতোই দেখতে, তবে কিছু বিশেষ হেডার থাকে, যা সার্ভারকে জানায় যে ক্লায়েন্ট Web Sockets প্রোটোকলে রূপান্তরিত হতে চায়।
- HTTP রিকোয়েস্ট হেডার: ক্লায়েন্টের HTTP রিকোয়েস্টে কিছু গুরুত্বপূর্ণ হেডার থাকে, যেমন:
Upgrade: websocket– এটি সার্ভারকে জানায় যে, ক্লায়েন্ট Web Socket প্রোটোকলে আপগ্রেড করতে চায়।Connection: Upgrade– এটি নির্দেশ করে যে, কানেকশনটি আপগ্রেড করা হবে এবং এটি শুধুমাত্র Web Socket কানেকশনের জন্য।Sec-WebSocket-Key– এটি একটি অদ্বিতীয় (unique) কোড যা Web Socket কানেকশন নিরাপদ করার জন্য ব্যবহৃত হয়।Sec-WebSocket-Version– এটি Web Sockets প্রোটোকলের সংস্করণ জানায়, সাধারণত এটি "13" থাকে, যা সর্বাধিক ব্যবহৃত সংস্করণ।
এই HTTP রিকোয়েস্টের মাধ্যমে, ক্লায়েন্ট সার্ভারকে জানায় যে এটি একটি Web Socket কানেকশনের জন্য প্রস্তুত।
২. সার্ভার থেকে HTTP রেসপন্স
যখন সার্ভার HTTP রিকোয়েস্ট পায় এবং যদি সব কিছু সঠিক থাকে, তখন এটি একটি HTTP 101 (Switching Protocols) রেসপন্স পাঠায়। এই রেসপন্সটি ক্লায়েন্টকে জানায় যে, সার্ভার Web Sockets প্রোটোকলে আপগ্রেড হতে সম্মত।
- HTTP 101 রেসপন্স হেডার: সার্ভারের রেসপন্সে কিছু গুরুত্বপূর্ণ হেডার থাকে, যেমন:
HTTP/1.1 101 Switching Protocols– এটি সার্ভারের রেসপন্স কোড যা জানায় যে, প্রটোকলটি সফলভাবে পরিবর্তিত হয়েছে।Upgrade: websocket– এটি সার্ভারকে জানায় যে, কানেকশনটি Web Sockets প্রোটোকলে পরিবর্তিত হয়েছে।Connection: Upgrade– সার্ভার নিশ্চিত করে যে, এটি কানেকশন আপগ্রেড করেছে।Sec-WebSocket-Accept– এটি ক্লায়েন্টের পাঠানোSec-WebSocket-Keyএর সাথে মিলে যায় এবং ক্লায়েন্টের নিরাপত্তা যাচাই করে।
এছাড়া, সার্ভার ক্লায়েন্টের পাঠানো Sec-WebSocket-Key এর সাথে কিছু হ্যাশিং করে Sec-WebSocket-Accept হেডার তৈরি করে, যা নিরাপত্তা নিশ্চিত করতে সহায়তা করে।
৩. Web Socket কানেকশন স্থাপন
HTTP রিকোয়েস্ট এবং রেসপন্স সফলভাবে সম্পন্ন হওয়ার পর, Web Sockets কানেকশন স্থায়ীভাবে খোলা থাকে। একবার কানেকশন স্থাপিত হলে, ক্লায়েন্ট এবং সার্ভার একে অপরের সাথে অবিচ্ছিন্নভাবে ডেটা আদান-প্রদান করতে পারে। এই কানেকশনটি একদম স্থায়ী (persistent) এবং একে অপরকে ডেটা পাঠানো এবং গ্রহণ করার জন্য কোনো নতুন রিকোয়েস্ট-রেসপন্স লুপের প্রয়োজন হয় না।
- ডেটা আদান-প্রদান: Web Sockets ব্যবহার করে ক্লায়েন্ট এবং সার্ভার ছোট ছোট ডেটা ফ্রেমে (frames) ডেটা আদান-প্রদান করতে পারে। এই ডেটা পাঠানো হয় বাইনারি বা টেক্সট ফরম্যাটে।
৪. কানেকশন বন্ধ করা
কোনো পক্ষ যদি কানেকশন বন্ধ করতে চায়, তবে তা একটি "close frame" পাঠিয়ে বন্ধ করতে পারে। এই প্রক্রিয়াটি এমনভাবে ঘটে:
- ক্লায়েন্ট সাইড: ক্লায়েন্ট একটি "close frame" পাঠায়, যা সার্ভারকে জানায় যে কানেকশন বন্ধ করতে হবে।
- সার্ভার সাইড: সার্ভার এই "close frame" গ্রহণ করে এবং একটি "close frame" ফিরিয়ে পাঠিয়ে কানেকশনটি বন্ধ করে।
এইভাবে, Web Sockets কানেকশন বন্ধ করা হয় এবং তারপর আর কোনো ডেটা আদান-প্রদান হয় না।
সারাংশ
Web Sockets সংযোগ স্থাপনের প্রক্রিয়া শুরু হয় ক্লায়েন্টের HTTP রিকোয়েস্ট দিয়ে, যার মধ্যে Web Socket প্রোটোকলে আপগ্রেডের জন্য বিশেষ হেডার থাকে। সার্ভার এই রিকোয়েস্ট গ্রহণ করে এবং HTTP 101 রেসপন্স পাঠিয়ে Web Socket কানেকশন স্থাপন করে। একবার কানেকশন স্থাপন হলে, এটি স্থায়ী এবং অবিচ্ছিন্ন থাকে, এবং দুপক্ষ একে অপরকে ডেটা পাঠাতে পারে। এই প্রক্রিয়াটি নিশ্চিত করে রিয়েল-টাইম এবং দ্রুত ডেটা আদান-প্রদান, যা বিশেষত চ্যাট অ্যাপ্লিকেশন, লাইভ স্ট্রিমিং এবং গেমিং অ্যাপ্লিকেশনে কার্যকর।
Read more