Socket.IO handles WebSocket connections with automatic reconnection, rooms, namespaces, and fallback to HTTP long-polling. Real-time apps without the pain.
Why Not Raw WebSockets?
Raw WebSocket API: no reconnection, no rooms, no broadcasting, no fallbacks. Connection drops? You handle it. Binary data? You parse it.
Socket.IO: production-grade real-time communication with a simple API.
What You Get for Free
Server:
import { Server } from 'socket.io';
const io = new Server(3000, { cors: { origin: '*' } });
io.on('connection', (socket) => {
console.log(`User connected: ${socket.id}`);
// Listen for events
socket.on('chat:message', (data) => {
// Broadcast to everyone in the room
io.to(data.room).emit('chat:message', {
user: socket.id,
text: data.text,
timestamp: Date.now(),
});
});
// Rooms
socket.on('join:room', (room) => {
socket.join(room);
io.to(room).emit('user:joined', socket.id);
});
socket.on('disconnect', () => {
console.log(`User disconnected: ${socket.id}`);
});
});
Client:
import { io } from 'socket.io-client';
const socket = io('http://localhost:3000');
socket.emit('join:room', 'general');
socket.emit('chat:message', { room: 'general', text: 'Hello!' });
socket.on('chat:message', (msg) => {
console.log(`${msg.user}: ${msg.text}`);
});
Auto-reconnection — connection drops → Socket.IO reconnects automatically
Rooms — group sockets for targeted broadcasting
Namespaces — separate communication channels on one connection
Binary support — send files, images, buffers
Acknowledgements — get confirmation that a message was received
Use Cases
- Chat applications
- Live notifications
- Collaborative editing (like Google Docs)
- Live dashboards and monitoring
- Multiplayer games
- Live sports scores
Quick Start
npm i socket.io # server
npm i socket.io-client # client
Scaling
For multiple servers, use the Redis adapter:
import { createAdapter } from '@socket.io/redis-adapter';
io.adapter(createAdapter(pubClient, subClient));
Now events broadcast across all server instances.
If your app needs real-time features — Socket.IO gets you there in an afternoon.
Need web scraping or data extraction? Check out my tools on Apify — get structured data from any website in minutes.
Custom solution? Email spinov001@gmail.com — quote in 2 hours.
Top comments (0)