WebSockets Advanced

Advanced WebSocket patterns and Socket.io.

Socket.io Client

Install and connect
const socket = io("http://localhost:3000");

Emit events
socket.emit("message", { text: "Hello" });

Listen for events
socket.on("message", (data) => {
  console.log(data);
});

Join room
socket.emit("joinRoom", "room123");

Disconnect
socket.disconnect();

Socket.io Server

const io = require("socket.io")(3000);

Handle connections
io.on("connection", (socket) => {
  console.log("User connected:", socket.id);

  // Listen for events
  socket.on("message", (data) => {
    // Emit to sender
    socket.emit("response", data);
    
    // Broadcast to all except sender
    socket.broadcast.emit("message", data);
    
    // Emit to everyone
    io.emit("message", data);
  });

  socket.on("disconnect", () => {
    console.log("User disconnected");
  });
});

Rooms & Namespaces

Join room
socket.join("room123");

Leave room
socket.leave("room123");

Emit to room
io.to("room123").emit("message", data);

Create namespace
const chat = io.of("/chat");
chat.on("connection", (socket) => {
  console.log("Connected to chat");
});

Connect to namespace (client)
const chat = io("http://localhost:3000/chat");

Reconnection

Auto-reconnect options
const socket = io("http://localhost:3000", {
  reconnection: true,
  reconnectionAttempts: 5,
  reconnectionDelay: 1000
});

Reconnection events
socket.on("reconnect_attempt", () => {
  console.log("Reconnecting...");
});

socket.on("reconnect", () => {
  console.log("Reconnected!");
});