Tech TutorBangla Web Documentation
Portfolio
HomeHTMLCSSTailwind CSSJavaScriptTypeScriptReactNext.jsNode.jsExpressSocket.IOExpoWordPressPostgreSQLPrismaPostgresNestJSMongoDBDockerTanStackTanStack TableRTK QueryGitGitHub
  • Socket.IO Documentation25টি অধ্যায়
প্রযুক্তি নির্বাচন
HomeHTMLCSSTailwind CSSJavaScriptTypeScriptReactNext.jsNode.jsExpressSocket.IOExpoWordPressPostgreSQLPrismaPostgresNestJSMongoDBDockerTanStackTanStack TableRTK QueryGitGitHub
  • Introduction
  • Why Use Socket.IO
  • Socket.IO vs WebSocket
  • Installation
  • Client-Server Setup
  • Connection Lifecycle
  • Events
  • Data Transfer
  • Broadcasting
  • Rooms
  • Namespaces
  • Private & Group Messaging
  • Acknowledgements & Timeouts
  • Connection State Recovery
  • Reconnection & Errors
  • Authentication
  • Middleware
  • CORS Configuration
  • Express Integration
  • Next.js Integration
  • TypeScript
  • Chat Application
  • Best Practices
  • Next.js + Express Chat App
  • Next.js + Express Notifications
  1. Docs
  2. Socket.IO
  3. Socket.IO with Express.js
Socket.IOIntermediate

Socket.IO with Express.js

Express ও Socket.IO একই server-এ চালানো, REST থেকে socket emit — বাংলায় গাইড।

21টি অংশবাংলা ভাষায়

বাস্তব project-এ সাধারণত REST API আর real-time একসাথে লাগে। Express app আর Socket.IO server একই HTTP server শেয়ার করতে পারে — ফলে একই port-এ দুটোই চলে।

শেখার লক্ষ্য

  • Express app ও Socket.IO-এর মধ্যে HTTP server শেয়ার করা
  • REST route থেকে socket event emit
  • একই port, একই process — deploy সহজ

HTTP Server শেয়ার করা

server.jsjavascript
javascript
const express = require("express");
const { createServer } = require("node:http");
const { Server } = require("socket.io");

const app = express();
app.use(express.json());

// Express app কে HTTP server-এ মুড়ে দিন
const httpServer = createServer(app);

// সেই একই server-এ Socket.IO
const io = new Server(httpServer, {
  cors: { origin: "http://localhost:5173" },
});

app.get("/", (req, res) => {
  res.send("REST + Socket.IO একসাথে");
});

io.on("connection", (socket) => {
  console.log("socket connected:", socket.id);
});

httpServer.listen(3000, () => {
  console.log("http://localhost:3000");
});

Line-by-line:

  1. createServer(app) — Express app-কে Node HTTP server-এ পরিণত করে
  2. new Server(httpServer, {...}) — Socket.IO সেই server-এর উপরে
  3. app.get(...) — সাধারণ REST route
  4. io.on(\"connection\", ...) — realtime
  5. httpServer.listen(...) — একটাই port, দুটোই serve করে
app.listen নয়

Socket.IO যোগ করার পর app.listen(3000) নয় — httpServer.listen(3000) ব্যবহার করুন। নাহলে socket server কখনো bind হবে না।

REST থেকে Socket-এ Emit

ধরুন একটি order POST route আছে; নতুন order এলে socket-এ সবাইকে জানানো হবে।

REST + socket emitjavascript
javascript
app.post("/api/orders", (req, res) => {
  const order = {
    id: Date.now(),
    item: req.body.item,
  };

  // REST response
  res.status(201).json(order);

  // একই সাথে realtime notify
  io.emit("order:new", order);
});
কেন এটা শক্তিশালী

একই business logic দুই চ্যানেলে ব্যবহার হয় — client REST POST দিয়ে order দেয়, আর বাকি সব connected client সাথে সাথে order:new পায়। Admin dashboard, notification, live list — সব একই socket থেকে চলে।

Socket Handler-এ Express-এর তথ্য

reuse servicejavascript
javascript
io.on("connection", (socket) => {
  // query, headers ইত্যাদি handshake থেকে
  const token = socket.handshake.auth.token;

  socket.on("orders:list", async (_, ack) => {
    // চাইলে Express-level service সরাসরি ব্যবহার করুন
    const orders = await orderService.findAll();
    ack(orders);
  });
});

Project Structure

src/
├── server.js          # httpServer + io setup
├── app.js             # express app + routes
├── socket/
│   └── index.js       # io.on("connection", ...) handlers
├── services/
│   └── order.service.js
└── models/

সাধারণ ভুল ও সমাধান

  • দুটি আলাদা server — REST :3000, socket :4000 — CORS ও deployment জটিল; এক server-এ রাখা ভালো
  • app.listen ব্যবহার — socket কাজ করবে না; httpServer.listen
  • Express middleware-এ socket event emit ভুলে যাওয়া — business logic-এ socket reference import/DI করুন

Practice Task

  • Express app-এর সাথে Socket.IO একই port-এ চালান
  • /api/orders POST route থেকে io.emit দিয়ে সব client-কে notify করুন
  • একটি service function দুই জায়গায় (REST ও socket) reuse করুন

সম্পর্কিত অধ্যায়: CORS Configuration · Socket.IO with Next.js · Building a Real-Time Chat Application

শেষ প্যারায় নিজে practice করুন — কোড কপি করে নিজের এডিটরে চালিয়ে দেখুন।
আগেরSocket.IO CORS ConfigurationপরেরSocket.IO with Next.js
এই পেজে
Tech Tutor

বাংলায় ওয়েব ডেভেলপমেন্ট ডকুমেন্টেশন শিখুন — ধাপে ধাপে।

Homeসব ডকুমেন্টেশনQuick Startআমার নোটস

© 2026 Tech Tutor. বাংলায় শিখুন, বাংলায় গড়ুন।

mdanamolhasan1998@gmail.com