Web Sockets
সাধারণ HTTP রিকোয়েস্ট হলো একমুখী (Unary), যেখানে ব্রাউজার রিকোয়েস্ট করলে সার্ভার রেসপন্স দেয়। কিন্তু Web Sockets আমাদের দ্বিমুখী (Bidirectional) এবং ফুল-ডুপ্লেক্স যোগাযোগের সুবিধা দেয়।
1. Web Sockets কি?
ওয়েব সকেট হলো একটি লং-লিভড (Long-lived) কানেকশন যা একবার স্থাপন হয়ে গেলে ক্লায়েন্ট এবং সার্ভার উভয়েই যেকোনো সময় একে অপরকে ডেটা পাঠাতে পারে। এটি TCP এর ওপর ভিত্তি করে চলে।
2. কেন ওয়েব সকেট প্রয়োজন?
সাধারণ HTTP তে যদি সার্ভারে কোনো নতুন তথ্য থাকে, তবে ব্রাউজার তা জানতে পারে না যতক্ষণ না ব্রাউজার নিজে থেকে রিকোয়েস্ট পাঠায় (Polling)। ওয়েব সকেট এই সমস্যা সমাধান করে।
ব্যবহারের ক্ষেত্রসমূহ (Use Cases):
- Chat Applications: রিয়েল-টাইম মেসেজ আদান-প্রদান (যেমন: WhatsApp, Messenger)।
- Live Sports Score: স্কিল সেকেন্ডের মধ্যে স্কোর আপডেট করা।
- Stock Market Dashboards: শেয়ারের দামের পরিবর্তন সাথে সাথে দেখানো।
- Multiplayer Games: গেমের মধ্যে প্লেয়ারদের মুভমেন্ট সিনক্রোনাইজ করা।
3. কিভাবে কাজ করে? (The Handshake)
ওয়েব সকেট কানেকশন শুরু হয় একটি সাধারণ HTTP রিকোয়েস্টের মাধ্যমে (Upgrade Header ব্যবহার করে)।
- Request: ব্রাউজার বলে, "আমি এই কানেকশনটি ওয়েব সকেটে ট্রান্সফার করতে চাই।"
- Response: সার্ভার রাজি হলে 101 Switching Protocols স্ট্যাটাস পাঠিয়ে কানেকশনটি ওপেন রাখে।
- Communication: এরপর থেকে কোনো HTTP হেডার ছাড়াই সরাসরি বাইনারি বা টেক্সট ডেটা আদান-প্রদান হয়।
4. Web Sockets বনাম HTTP Polling
| বৈশিষ্ট্য | HTTP Polling | Web Sockets |
|---|---|---|
| কমিউনিকেশন | একমুখী (Client to Server) | দ্বিমুখী (Bidirectional) |
| ওভারহেড | অনেক বেশি (প্রতিবার হেডার যায়) | খুব কম (শুধুমাত্র ডেটা যায়) |
| ল্যাটেন্সি | বেশি | অনেক কম (Real-time) |
| কানেকশন | শর্ট-লিভড | লং-লিভড |
IMPORTANT
ওয়েব সকেট সার্ভারের ওপর অনেক বেশি 'Open Connections' এর চাপ তৈরি করে। তাই স্কেলিং করার সময় লোড ব্যালেন্সারে Sticky Sessions বা Redis Pub/Sub ব্যবহার করে বিভিন্ন সার্ভারের মধ্যে সিঙ্ক করা প্রয়োজন।