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 Reconnection and Error Handling
Socket.IOIntermediate

Socket.IO Reconnection and Error Handling

auto reconnection, connection state, reconnect_error, server error handling — বাংলায়।

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

আসল application-এ network সবসময় স্থিতিশীল নয়। Socket.IO-এর সবচেয়ে বড় সুবিধাগুলোর একটি হলো automatic reconnection — নিজে থেকেই সংযোগ ফিরে আসে।

শেখার লক্ষ্য

  • client auto-reconnect কীভাবে কাজ করে
  • reconnection option কনফিগার
  • connection state ও connection error event হ্যান্ডেল
  • server-side error handling

Default Reconnection

Client disconnect হলে Socket.IO নিজে থেকেই প্রচেষ্টা করে — প্রথমে সামান্য দেরি, তারপর ক্রমে একটু বাড়িয়ে (exponential backoff), ডিফল্টে অসীম সংখ্যক চেষ্টা।

client reconnection optionsjavascript
javascript
const socket = io("http://localhost:3000", {
  // সর্বোচ্চ unseccessful attempt (ডিফল্ট Infinity)
  reconnectionAttempts: 5,

  // দেরি (ms) — ডিফল্ট 1000
  reconnectionDelay: 1000,

  // কত বাড়বে (multiplier)
  reconnectionDelayMax: 5000,

  // randomness (0-1) — thundering herd এড়াতে
  randomizationFactor: 0.5,

  // নিজে auto-reconnect বন্ধ করতে
  reconnection: true,
});

Connection State Flow

client eventsjavascript
javascript
socket.on("connect", () => console.log("connected"));
socket.on("disconnect", (reason) => console.log("disconnected:", reason));
socket.on("connect_error", (err) => console.log("error:", err.message));

// reconnection cycle
socket.io.on("reconnect_attempt", (n) => console.log("attempt", n));
socket.io.on("reconnect", (n) => console.log("reconnected on", n));
socket.io.on("reconnect_error", (err) => console.log("reconnect failed:", err));
socket.io.on("reconnect_failed", () => console.log("সব চেষ্টা শেষ"));
socket.io.on("ping", () => console.log("heartbeat"));

reconnect_* ঘটনাগুলো socket-এর নয়, `socket.io` (Manager)-এর উপর শুনতে হয়। ping/pong দিয়ে Socket.IO সংযোগ জীবিত কিনা যাচাই করে; নির্দিষ্ট সময়ে সাড়া না এলে connection tear-down হয়।

Reconnection Option ব্যাখ্যা

Optionকাজ
reconnectionচালু/বন্ধ (ডিফল্ট true)
reconnectionAttemptsসর্বোচ্চ চেষ্টা (ডিফল্ট Infinity)
reconnectionDelayপ্রথম delay ms (ডিফল্ট 1000)
reconnectionDelayMaxসর্বোচ্চ delay (ডিফল্ট 5000)
randomizationFactordelay-এ randomness (ডিফল্ট 0.5)
Backpressure

randomizationFactor: delay = base (1 ± factor)। অনেক client একসাথে reconnect করলে সবাই একই মুহূর্তে hit করলে thundering herd* হয়। randomness ছড়িয়ে দিলে server-এ চাপ কমে।

Manual Reconnect

কখনো server নিজে থেকে client-কে disconnect করে; client চাইলে হাতে re-connect করতে পারে:

manual reconnectjavascript
javascript
socket.on("disconnect", (reason) => {
  if (reason === "io server disconnect") {
    // server disconnect করেছে — auto-reconnect চলবে না
    socket.connect(); // নিজে থেকে আবার
  }
});

Server-Side Error Handling

Server-এ error event listener যোগ করুন, আর event handler-এ সবসময় try/catch রাখুন যাতে একটি error পুরো process না ফেলে।

server error handlingjavascript
javascript
io.on("connection", (socket) => {
  socket.on("error", (err) => {
    console.error("socket error from", socket.id, err.message);
  });

  socket.on("chat:message", async (payload, ack) => {
    try {
      const saved = await saveMessage(payload);
      if (typeof ack === "function") ack({ ok: true, id: saved.id });
    } catch (err) {
      console.error(err);
      if (typeof ack === "function") {
        ack({ ok: false, error: "message সংরক্ষণ ব্যর্থ" });
      }
    }
  });
});
Unhandled error

একটি socket handler-এ exception ছড়ালে পুরো Node process crash করতে পারে — ফলে সব client-এর connection যায়। প্রতিটি async callback-এ try/catch রাখুন এবং ack-এ error report করুন।

Real-World Behavior

  • Wi-Fi বন্ধ করে ৫ সেকেন্ড পর চালু করুন — reconnect_attempt দেখবেন, তারপর reconnect
  • Server বন্ধ করে রাখলে reconnect_failed আসবে (যদি attempts সীমিত হয়)
  • Server restart-এর পর client নিজে থেকে নতুন connection-এ ফিরে আসবে

সাধারণ ভুল ও সমাধান

  • socket.on("reconnect") ভুল target — এগুলো socket.io-এ register করুন
  • reconnect-এ state হারানো — rejoin logic যোগ করুন অথবা Connection State Recovery
  • backoff ছাড়া infinite attempt — production-এ attempts সহ backoff রাখুন

Practice Task

  • reconnectionAttempts: 3 দিয়ে server বন্ধ করে reconnect_failed দেখুন
  • reconnect ইভেন্টে server-এ আবার room join করুন
  • একটি handler-এ try/catch যোগ করে ack-এ error report করুন

সম্পর্কিত অধ্যায়: Connecting and Disconnecting · Connection State Recovery

শেষ প্যারায় নিজে practice করুন — কোড কপি করে নিজের এডিটরে চালিয়ে দেখুন।
আগেরSocket.IO Connection State RecoveryপরেরSocket.IO Authentication and Authorization
এই পেজে
Tech Tutor

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

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

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

mdanamolhasan1998@gmail.com