Tech TutorBangla Web Documentation
Portfolio
HomeHTMLCSSTailwind CSSJavaScriptTypeScriptReactNext.jsNode.jsExpressSocket.IOExpoWordPressPostgreSQLPrismaPostgresNestJSMongoDBDockerTanStackTanStack TableRTK QueryGitGitHub
  • Socket.IO Documentation25টি অধ্যায়
প্রযুক্তি নির্বাচন
HomeHTMLCSSTailwind CSSJavaScriptTypeScriptReactNext.jsNode.jsExpressSocket.IOExpoWordPressPostgreSQLPrismaPostgresNestJSMongoDBDockerTanStackTanStack TableRTK QueryGitGitHub
  • Introduction
  • Why Use Socket.IO
  • Socket.IO vs WebSocket
  • Installation
  • Client-Server Setup
  • Connection Lifecycle
  • Events
  • Data Transfer
  • Broadcasting
  • Rooms
  • Namespaces
  • Private & Group Messaging
  • Acknowledgements & Timeouts
  • Connection State Recovery
  • Reconnection & Errors
  • Authentication
  • Middleware
  • CORS Configuration
  • Express Integration
  • Next.js Integration
  • TypeScript
  • Chat Application
  • Best Practices
  • Next.js + Express Chat App
  • Next.js + Express Notifications
  1. Docs
  2. Socket.IO
  3. Socket.IO Connection State Recovery
Socket.IOIntermediate

Socket.IO Connection State Recovery

Connection State Recovery কী, config, কী recover হয় ও কী হয় না — Socket.IO v4.6+ বাংলায়।

24টি অংশবাংলা ভাষায়

Network সমস্যায় connection ছুটে গেলে সাধারণত room membership, auth state সব হারিয়ে যায়। Connection State Recovery (CSR) — Socket.IO v4.6+ এর feature — সাময়িক সংযোগ-বিচ্ছিন্ন হয়ে ফিরে এলে আগের অবস্থা ফিরিয়ে দেয়।

শেখার লক্ষ্য

  • CSR কী এবং সমাধান করে কোন সমস্যা
  • server option কনফিগার করা
  • কী কী recover হয় এবং কী হয় না
  • কখন CSR যথেষ্ট নয়

সমস্যা: Reconnect-এ হারানো state

Client বিচ্ছিন্ন হয়ে আবার যুক্ত হলে:

  • new socket.id (পুরনোটির সাথে সম্পর্ক নেই)
  • আগের সকলে যোগ দেওয়া room membership হারায়
  • session/auth তথ্য হারায়

Browser refresh, network hiccup, মোবাইল data switch — এসব ক্ষেত্রে এটা বেশি লক্ষ্য করা যায়। তাই সাধারণত client reconnect হলে নিজে থেকে আবার room-এ join করা লাগে (socket.on("connect", () => socket.emit("rejoin", ...)))।

সমাধান: Connection State Recovery

server option চালু করলে Socket.IO session সংরক্ষণ করে এবং client যখন সংক্ষিপ্ত সময়ের মধ্যে (ডিফল্ট ২ মিনিট) ফিরে আসে, তখন room membership-সহ আগের state ফিরিয়ে দেয়; পাশাপাশি missed event-গুলোও পাঠায়।

server CSR optionjavascript
javascript
const io = new Server(httpServer, {
  connectionStateRecovery: {
    // বাড়তি বাদ দিয়ে ফিরে আসার সর্বোচ্চ সময় (ডিফল্ট 2 min)
    maxDisconnectionDuration: 2 * 60 * 1000,

    // middleware আবার চালাবে কি না (ডিফল্ট false)
    skipMiddlewares: true,
  },
});

Client Side

Client-এ আলাদা কিছু করতে হয় না — reconnect স্বয়ংক্রিয়।

client recovered flagjavascript
javascript
const socket = io();

socket.on("connect", () => {
  console.log("connected (new বা recovered):", socket.recovered);
});
  • socket.recovered === true — session সফলভাবে recovered, room membership ফিরে এসেছে
  • socket.recovered === false — নতুন session; নিজে থেকে rejoin করতে হবে

কী Recover হয়, কী হয় না

Recover হয়Recover হয় না
socket.data ও room membershipআপনার নিজের অ্যাপের database state
মিস হওয়া event (adapter সমর্থিত হলে)untransmitted ack (ack নিজে নয়)
socket.id পুনঃসংযোগserver-এ রাখা ভিন্ন in-memory state (আপনি নিজে handle করবেন)
একাধিক server

একাধিক server process-এ CSR ঠিকমতো কাজ করতে compatible adapter দরকার। in-memory adapter কেবল একই process-এর মধ্যে session রাখে। একাধিক node হলে Redis adapter-এর মতো shared storage লাগবে — বিস্তারিত Best Practices।

Line-by-line

  1. connectionStateRecovery — session সংরক্ষণ চালু করে
  2. maxDisconnectionDuration — এই সময়ের মধ্যে ফিরলে state ফিরে, নাহলে নতুন session
  3. skipMiddlewares: true — recovered connection-এ middleware আবার না চালানো (auth repeat না হলে সুবিধাজনক)
  4. Client-এ socket.recovered পড়ে UI/লজিক বুঝতে পারে

কখন CSR যথেষ্ট নয়

  • অ্যাপের নিজস্ব critical state (যেমন open modal, form draft) — সেটি client-এ রাখুন/rejoin-এ পাঠান
  • অ্যাকশন-level নিশ্চয়তা দরকার হলে — Acknowledgements ব্যবহার করুন
  • দীর্ঘ বিচ্ছিন্নতা — max duration পেরিয়ে গেলে পুরোপুরি নতুন session

Practice Task

  • devtools-network offline করে কয়েক সেকেন্ড পর online করুন; socket.recovered এর মান দেখুন
  • maxDisconnectionDuration কমিয়ে (যেমন 5s) রেখে দেখুন কখন recovered false হয়
  • room-এ join করে disconnect-reconnect করে membership টিকে আছে কিনা verify করুন

সম্পর্কিত অধ্যায়: Reconnection and Error Handling · Rooms

শেষ প্যারায় নিজে practice করুন — কোড কপি করে নিজের এডিটরে চালিয়ে দেখুন।
আগেরSocket.IO Acknowledgements and TimeoutsপরেরSocket.IO Reconnection and Error Handling
এই পেজে
Tech Tutor

বাংলায় ওয়েব ডেভেলপমেন্ট ডকুমেন্টেশন শিখুন — ধাপে ধাপে।

Homeসব ডকুমেন্টেশনQuick Startআমার নোটস

© 2026 Tech Tutor. বাংলায় শিখুন, বাংলায় গড়ুন।

mdanamolhasan1998@gmail.com