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!");
});