Node.js WebSocket — Real-Time Communication with Socket.io

Build real-time features with Socket.io: chat rooms, live notifications, presence detection, and scaling strategies.

Node.js Intermediate 📖 10 min

Socket.io Server Setup

const express = require('express');
const http = require('http');
const { Server } = require('socket.io');

const app = express();
const server = http.createServer(app);
const io = new Server(server);

io.on('connection', (socket) => {
  console.log('User connected:', socket.id);
  
  socket.on('message', (data) => {
    io.emit('message', data); // Broadcast to all
  });
  
  socket.on('disconnect', () => {
    console.log('User disconnected:', socket.id);
  });
});

server.listen(3000);

Chat Rooms

io.on('connection', (socket) => {
  socket.on('join-room', (roomId) => {
    socket.join(roomId);
    socket.to(roomId).emit('user-joined', socket.id);
  });
  
  socket.on('send-message', ({ roomId, message }) => {
    io.to(roomId).emit('new-message', {
      userId: socket.id,
      message,
      timestamp: Date.now()
    });
  });
  
  socket.on('leave-room', (roomId) => {
    socket.leave(roomId);
    socket.to(roomId).emit('user-left', socket.id);
  });
});

Client-Side Connection

import { io } from 'socket.io-client';

const socket = io('http://localhost:3000');

socket.on('connect', () => {
  console.log('Connected:', socket.id);
});

socket.emit('join-room', 'general');
socket.on('new-message', (data) => {
  console.log(`${data.userId}: ${data.message}`);
});

Ready to Level Up Your Coding Skills?

Join Coderz Club and learn to code with challenges, battles, and an AI mentor.

Join Coderz Club Free →