Skip to content

WebSockets

রিয়েল-টাইম, pub/sub, প্রেজেন্স, ব্যাকপ্রেশার

0/11 অধ্যায় · 0 XP অর্জিত

  1. 00 WebSockets ও realtime — রোডম্যাপ দশটি চ্যাপ্টার যা 'WebSocket handshake আসলে কী' থেকে শুরু করে Redis pub/sub, presence, auth আর সামনে nginx সহ একটি self-hosted, horizontally scaled realtime server পর্যন্ত নিয়ে যাবে।
  2. 01 WebSockets কী এবং কখন ব্যবহার করবেন একটা WebSocket হলো একটা bidirectional, persistent TCP connection যা জীবন শুরু করে একটা HTTP request হিসেবে। যখন REST বা RPC কোনোটাই মানায় না তখন কাজে লাগে। প্রায়ই ভুলভাবে ব্যবহৃত হয়।
  3. 02 handshake আর frame protocol একটা server ship করার জন্য যে অংশগুলো গুরুত্বপূর্ণ সেই অংশে RFC 6455। Upgrade header, frame layout, masking, opcodes, close code, আর library যে নিয়মগুলো মেনে চলে যাতে আপনাকে না চলতে হয়।
  4. 03 আপনার প্রথম server End-to-end Go WebSocket server আশি লাইনে, একটা browser client সহ। শেষে আপনার কাছে একটা echo service plus একটা ছোট chat room থাকবে — দুটোই localhost-এ চলছে, দুটোই বাস্তব।
  5. 04 উপরে message protocol Raw frame byte বহন করে। বাস্তব app-এর type, version আর request/response correlation দরকার। বন্য পরিবেশে দশটা client আসার আগেই message envelope ডিজাইন করলে বছরের পর বছরের যন্ত্রণা বাঁচে।
  6. 05 Server-Sent Events যখন client শুধু শোনে, SSE গুরুত্বপূর্ণ প্রতিটা মাত্রায় WebSockets-কে হারায় — সহজতর protocol, বিনামূল্যে reconnect, plain HTTP। One-way realtime-এর default।
  7. 06 Pub/sub at scale একটা process হাজার হাজার connection ধরে রাখতে পারে; production-এ অনেকগুলো দরকার। যে অংশটা সেটা কাজ করায় তা হলো একটা pub/sub bus যা যেকোনো process থেকে অন্য প্রতিটা process-এর প্রতিটা connection-এ event fan করে।
  8. 07 Presence আর rooms কে online আর তারা কোন channel দেখছে তা জানা একটা one-process demo-তে সহজ দেখায় আর scale-এ সত্যিই কঠিন। data model অর্ধেক কাজ; eviction story বাকি অর্ধেক।
  9. 08 Auth, origin, আর rate limits WebSocket handshake সাধারণ HTTP-র মতো দেখায়, যা এদের সাধারণ HTTP আক্রমণ plus কয়েকটা WebSocket-নির্দিষ্ট আক্রমণের শিকার করে। origin verify করুন, handshake-এ authenticate করুন, আর যত level পারেন সব level-এ rate-limit করুন।
  10. 09 Backpressure, reconnects, heartbeats Network ড্রপ করে। Client stall করে। Tab ঘুমায়। এই চ্যাপ্টারের প্যাটার্নগুলোই একটা WebSocket service যা এক সপ্তাহ চলে আর একটা যা এক ঘণ্টা খুঁড়িয়ে চলে — এদের মধ্যে পার্থক্য।
  11. 10 Production self-host TLS সহ nginx-এর পেছনে, systemd-managed, observable, Redis-এর মাধ্যমে process জুড়ে scaled। GraphQL আর gRPC ট্র্যাকের মতোই একই operational shape — wire-এ আলাদা protocol।