5 min read
•Question 52 of 62hardHow to implement WebSockets in Node.js?
Real-time communication with WebSockets.
What You'll Learn
- WebSocket basics
- Socket.io implementation
- Real-time patterns
Native WebSocket (ws)
$ terminalBash
npm install wscode.jsJavaScript
const WebSocket = require('ws');
const wss = new WebSocket.Server({ port: 8080 });
wss.on('connection', (ws) => {
console.log('Client connected');
ws.on('message', (message) => {
console.log('Received:', message.toString());
ws.send('Echo: ' + message);
});
ws.on('close', () => {
console.log('Client disconnected');
});
});
// Broadcast to all clients
function broadcast(data) {
wss.clients.forEach((client) => {
if (client.readyState === WebSocket.OPEN) {
client.send(JSON.stringify(data));
}
});
}Socket.io (Recommended)
$ terminalBash
npm install socket.iocode.jsJavaScript
const { Server } = require('socket.io');
const http = require('http');
const express = require('express');
const app = express();
const server = http.createServer(app);
const io = new Server(server, {
cors: { origin: '*' }
});
io.on('connection', (socket) => {
console.log('User connected:', socket.id);
// Listen for events
socket.on('chat message', (msg) => {
io.emit('chat message', msg); // Broadcast to all
});
// Join room
socket.on('join room', (room) => {
socket.join(room);
socket.to(room).emit('user joined', socket.id);
});
// Send to room
socket.on('room message', ({ room, msg }) => {
io.to(room).emit('message', msg);
});
socket.on('disconnect', () => {
console.log('User disconnected');
});
});
server.listen(3000);