Socket.IO – emit and broadcast they’re not the same

Posted: 08-02-2026 | Views: 4
Socket.IO – emit and broadcast they’re not the same

Let’s break it down cleanly (Socket.IO context).


1️⃣ io.emit

Sends the event to everyone connected

Including:

  • the sender
  • all other clients
  • all rooms (unless scoped)
io.emit("message", "Hello everyone");

✅ Sender receives it ✅ All clients receive it

Use when:

  • global notifications
  • system-wide updates
  • chat messages where sender should also get the event

2️⃣ socket.broadcast.emit

Sends the event to everyone except the sender

socket.broadcast.emit("message", "Hello others");

❌ Sender does NOT receive it ✅ All other connected clients receive it

Use when:

  • sender already knows the action
  • avoiding duplicate UI updates
  • typing indicators, presence updates

3️⃣ Room-specific versions (very important in real apps)

Emit to a room (including sender)

io.to("room1").emit("message", "Hello room");

Broadcast to a room (excluding sender)

socket.broadcast.to("room1").emit("message", "Hello room");

4️⃣ Visual mental model 🧠

Clients: A (sender), B, C

io.emit           → A, B, C
socket.broadcast  → B, C

5️⃣ Common mistakes 🚨

❌ Using io.emit for chat messages and then wondering why sender gets duplicates ❌ Forgetting broadcast in collaborative apps (cursor move, typing…) ❌ Not using rooms and spamming all users


6️⃣ Quick cheat sheet 🧾

Method Sender Others
io.emit
socket.broadcast.emit
io.to(room).emit ✅ (room only)
socket.broadcast.to(room).emit ✅ (room only)

Add comment