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 Broadcasting Events
Socket.IOIntermediate

Socket.IO Broadcasting Events

io.emit, socket.broadcast, volatile emit ও targeted broadcast — বাংলায় সম্পূর্ণ গাইড।

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

Broadcasting মানে একসাথে অনেককে একই event পাঠানো। Socket.IO-তে এটি করার জন্য কয়েকটি ভিন্ন API আছে — কোনটি কখন ব্যবহার করবেন, সেটিই এই অধ্যায়ের মূল কথা।

শেখার লক্ষ্য

  • io.emit, socket.emit, socket.broadcast.emit-এর পার্থক্য
  • নির্দিষ্ট room-এ broadcast
  • volatile emit কী এবং কখন দরকার
  • সবচেয়ে common ভুল (নিজেকে বার্তা পাঠানো) এড়ানো

চারটি Emit প্যাটার্ন

APIকারা পায়
socket.emit("ev", data)শুধু নিজের socket
socket.broadcast.emit("ev", data)sender ছাড়া সব অন্যান্য socket
io.emit("ev", data)সবাই (sender সহ)
io.to(room).emit("ev", data)নির্দিষ্ট room-এর সবাই
socket.to(room).emit("ev", data)room-এর সবাই, sender ছাড়া
broadcast patternsjavascript
javascript
io.on("connection", (socket) => {
  // ১. sender কে reply
  socket.emit("welcome", "আপনি যুক্ত হলেন");

  // ২. sender ছাড়া সবাইকে জানান
  socket.broadcast.emit("user:joined", socket.id);

  // ৩. সবাইকে (sender-ও)
  io.emit("online:count", io.engine.clientsCount);

  // ৪. room-এ sender ছাড়া
  socket.to("general").emit("notice", "নতুন সদস্য");
});
সবচেয়ে সাধারণ ভুল

Chat message সবাইকে দেখাতে io.emit ব্যবহার করলে নিজের পাঠানো message-ও নিজেই আবার পাবেন — ফলে দুইবার দেখাবে (local render + echo)। সমাধানে socket.broadcast.emit ব্যবহার করুন, অথবা client-এ optimistic render করা choice-টি একটাই রাখুন।

Line-by-line: chat message flow

targeted broadcastjavascript
javascript
// client
socket.emit("chat:message", { room: "general", text: "হ্যালো" });

// server
io.on("connection", (socket) => {
  socket.on("chat:message", (payload) => {
    // শুধু room-এর বাকি সবাই পাবে, sender পাবে না
    socket.to(payload.room).emit("chat:message", {
      text: payload.text,
      from: socket.id,
    });
  });
});
  • socket.to(room) — sender বাদ দিয়ে room-এ পাঠায়
  • sender নিজের message local state-এ যোগ করতে পারে (তাই double render হবে না)
  • payload.room client থেকে আসছে, তাই server-side validation জরুরি

Volatile Emit

volatile মানে — যদি client সংযোগ-এ সমস্যায় না পায়, বার্তাটি বাতিল হয়ে যায়। Real-time tick, cursor position, live cursor — যেখানে পুরনো data পরে পৌঁছানো অর্থহীন, সেখানে ব্যবহার হয়:

volatile emitjavascript
javascript
// প্রতি 100ms-এ cursor position — হারিয়ে গেলেও ক্ষতি নেই
setInterval(() => {
  socket.volatile.emit("cursor:move", { x: 120, y: 40 });
}, 100);
  • buffered থাকে না; network পিছিয়ে গেলে গুরুত্বহীন update drop হয়
  • গুরুত্বপূর্ণ message (chat, order) volatile-এ পাঠাবেন নয়

Use Cases

  • Live presence — কে অনলাইনে এসেছে/গেছে
  • Typing indicator — একজনের typing বাকিরা দেখল
  • Live score / dashboard — সবাইকে একসাথে update
  • Room announcement — room-এর নির্দিষ্ট সদস্যদের system message

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

  • io.emit vs socket.broadcast.emit — intent বুঝে বেছে নিন: সবাই চাইলে io, নাকি sender ছাড়া চাইলে broadcast
  • Room নামের typo — to("genral") আর to("general") আলাদা; নাম constant-এ রাখুন
  • volatile দিয়ে জরুরি data — পাঠানো হয়নি ধরেই নিন; critical data-তে ack ব্যবহার করুন (Acknowledgements)

Practice Task

  • ৩টি tab খুলে একটি notice event broadcast করুন — io.emit ও socket.broadcast.emit-এর output তুলনা করুন
  • একটি room যোগ করে শুধু সেই room-এ broadcast করুন (পরের অধ্যায়ে দেখবেন)
  • volatile দিয়ে প্রতি সেকেন্ডে time emit করে network throttle-এ কী হয় দেখুন

সম্পর্কিত অধ্যায়: Events · Rooms · Namespaces

শেষ প্যারায় নিজে practice করুন — কোড কপি করে নিজের এডিটরে চালিয়ে দেখুন।
আগেরSocket.IO Sending and Receiving DataপরেরSocket.IO Rooms
এই পেজে
Tech Tutor

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

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

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

mdanamolhasan1998@gmail.com