HTTP থেকে WebSocket এর আপগ্রেড প্রক্রিয়া

Web Sockets এর সাথে HTTP Integration - ওয়েব সকেট (Web Sockets) - Web Development

235

Web Sockets প্রোটোকলটি HTTP প্রোটোকলের উপরে কাজ করে এবং একটি সক্রিয় ও দীর্ঘস্থায়ী কানেকশন তৈরি করার জন্য HTTP হ্যান্ডশেক ব্যবহৃত হয়। সাধারণ HTTP রিকোয়েস্টে, সার্ভার থেকে প্রতিটি রিকোয়েস্টের পর একটি নতুন রেসপন্স পাঠানো হয়। তবে Web Sockets এর ক্ষেত্রে, ক্লায়েন্ট HTTP রিকোয়েস্ট পাঠানোর পর, এটি একটি আপগ্রেড (Upgrade) প্রক্রিয়া মাধ্যমে Web Socket কানেকশনে রূপান্তরিত হয়। এই প্রক্রিয়ায় HTTP এর ওপর নির্ভর করে একটি টেকনিক্যালি উন্নত এবং ইন্টারঅ্যাকটিভ কানেকশন স্থাপন করা হয়।


HTTP থেকে WebSocket এর আপগ্রেড প্রক্রিয়া

Web Socket কানেকশন স্থাপন করার জন্য প্রথমে একটি HTTP হ্যান্ডশেক করা হয়। এই হ্যান্ডশেকটি মূলত HTTP 1.1 প্রোটোকল অনুসরণ করে, তবে কিছু বিশেষ হেডার পাঠানো হয় যা সার্ভারকে জানায় যে, ক্লায়েন্ট Web Socket প্রোটোকলে কানেকশন আপগ্রেড করতে চাচ্ছে।


১. HTTP রিকোয়েস্ট: আপগ্রেড অনুরোধ

Web Socket কানেকশন শুরু করার জন্য, ক্লায়েন্ট প্রথমে একটি HTTP রিকোয়েস্ট পাঠায় যা Web Socket প্রোটোকলে আপগ্রেডের অনুরোধ করে। এই রিকোয়েস্টের মধ্যে Upgrade এবং Connection হেডার থাকতে হবে, যা সার্ভারকে জানায় যে, এটি একটি সাধারণ HTTP রিকোয়েস্ট নয়, বরং Web Socket কানেকশনে রূপান্তরিত হওয়ার জন্য একটি অনুরোধ।

উদাহরণ: HTTP রিকোয়েস্ট (Upgrade Request)

GET /chat HTTP/1.1
Host: example.com
Connection: Upgrade
Upgrade: websocket
Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==
Sec-WebSocket-Version: 13

এখানে গুরুত্বপূর্ণ কিছু হেডার:

  • Connection: Upgrade: এটি জানায় যে, এই রিকোয়েস্টটি সাধারণ HTTP রিকোয়েস্ট নয়, বরং এটি কোনো কাস্টম প্রোটোকলে (এক্ষেত্রে Web Socket) আপগ্রেড করতে চায়।
  • Upgrade: websocket: এটি সার্ভারকে জানায় যে, ক্লায়েন্ট Web Socket প্রোটোকলে আপগ্রেড করতে চাচ্ছে।
  • Sec-WebSocket-Key: এটি একটি বাইনারি ডেটা, যা এক ধরনের সিকিউরিটি চ্যালেঞ্জ হিসেবে ব্যবহৃত হয়। সার্ভার এই চ্যালেঞ্জের মাধ্যমে প্রতিক্রিয়া দেয়।
  • Sec-WebSocket-Version: এটি Web Socket প্রোটোকলের সংস্করণ নির্দেশ করে, যাতে সার্ভার সঠিক প্রোটোকলটি ব্যবহার করে।

২. HTTP রেসপন্স: আপগ্রেড অনুমোদন

যখন সার্ভার এই HTTP রিকোয়েস্ট পায়, তখন এটি যাচাই করে এবং যদি সবকিছু ঠিক থাকে, তবে এটি একটি HTTP 101 রেসপন্স পাঠায়। এই রেসপন্সে "Switching Protocols" বার্তা থাকে, যা সার্ভারকে জানান দেয় যে, এটি Web Socket প্রোটোকলে পরিবর্তিত হতে যাচ্ছে।

উদাহরণ: HTTP রেসপন্স (Upgrade Acknowledgment)

HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: hSm9XKpVPL23c7k7f7tYpeI4vO8=

এখানে:

  • HTTP/1.1 101 Switching Protocols: এটি সার্ভারের পক্ষ থেকে নিশ্চিত করে যে, রিকোয়েস্টের জন্য আপগ্রেড অনুমোদিত হয়েছে এবং প্রোটোকল পরিবর্তন করা হয়েছে।
  • Sec-WebSocket-Accept: এটি একটি হ্যাশড ভ্যালু, যা Sec-WebSocket-Key এর সাথে যুক্ত থাকে এবং এটি প্রমাণ করে যে, সার্ভার রিকোয়েস্টটি বৈধ ও নিরাপদভাবে গ্রহণ করেছে।

৩. WebSocket কানেকশন স্থাপন

যতক্ষণ পর্যন্ত HTTP হ্যান্ডশেকটি সফলভাবে সম্পন্ন হয়, ততক্ষণ পর্যন্ত Web Socket কানেকশন স্থাপন করা সম্ভব হয়। একবার আপগ্রেড সফল হলে, এটি HTTP এর বাইরে চলে গিয়ে একটি উন্মুক্ত Web Socket কানেকশনে রূপান্তরিত হয়। এই কানেকশনটি ক্লায়েন্ট এবং সার্ভারের মধ্যে দীর্ঘস্থায়ী থাকে, এবং তাদের মধ্যে রিয়েল-টাইম ডেটা আদান-প্রদান সম্ভব হয়।


৪. WebSocket কানেকশন ব্যবহার

এখন থেকে, HTTP রিকোয়েস্ট এবং রেসপন্সের পরিবর্তে Web Socket প্রোটোকলের মাধ্যমে ডেটা আদান-প্রদান শুরু হয়। এই সময়ে আর কোনো HTTP হেডার বা প্রোটোকল ব্যবহার করা হয় না, বরং বার্তাগুলি Web Socket ফ্রেমে প্রেরিত হয়, যা দ্রুত, ফ্রিকোয়েন্সি-ভিত্তিক (real-time) এবং বাইনারি অথবা টেক্সট ডেটা ট্রান্সফার করতে সক্ষম।

উদাহরণ: WebSocket ফ্রেম (ডেটা আদান-প্রদান)

  • ক্লায়েন্ট থেকে সার্ভারে বার্তা প্রেরণ:
    WebSocket ফ্রেমে "Hello, Server!" পাঠানো।
  • সার্ভার থেকে ক্লায়েন্টে বার্তা প্রেরণ:
    WebSocket ফ্রেমে "Hello, Client!" পাঠানো।

৫. কানেকশন বন্ধ করা

Web Socket কানেকশন বন্ধ করতে হলে, ক্লায়েন্ট বা সার্ভার একটি "close" ফ্রেম পাঠায়। এটি ইঙ্গিত দেয় যে, কানেকশনটি বন্ধ করা হচ্ছে। এই প্রক্রিয়া HTTP প্রোটোকলের মত নয়, বরং এটি Web Socket ফ্রেমের মাধ্যমে পরিচালিত হয়।

উদাহরণ: WebSocket Close ফ্রেম

socket.close();  // ক্লায়েন্ট থেকে WebSocket কানেকশন বন্ধ করা

সারাংশ

Web Socket কানেকশন স্থাপনের প্রক্রিয়া HTTP প্রোটোকলের উপর ভিত্তি করে শুরু হয়, তবে এটি একটি বিশেষ "Upgrade" প্রক্রিয়া অনুসরণ করে যা HTTP কানেকশনকে Web Socket প্রোটোকলে রূপান্তরিত করে। এই প্রক্রিয়াটি ক্লায়েন্ট এবং সার্ভারের মধ্যে একটি স্থায়ী এবং দ্বৈত দিকের যোগাযোগ চ্যানেল তৈরি করে, যা দ্রুত এবং রিয়েল-টাইম ডেটা আদান-প্রদান নিশ্চিত করে। Web Socket কানেকশন কার্যকরভাবে HTTP হ্যান্ডশেকের মাধ্যমে শুরু হয় এবং একবার কানেকশন স্থাপন হলে, এটি HTTP প্রোটোকলের বাইরে চলে যায়।

Content added By
Promotion

Are you sure to start over?

Loading...