#1 Data Analytics Program in India
₹2,499₹1,499Enroll Now
5 min read
Question 52 of 62hard

How 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 ws
code.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.io
code.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);