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 Sending and Receiving Data
Socket.IOIntermediate

Socket.IO Sending and Receiving Data

payload types, multiple arguments, binary data, large payload নিয়ন্ত্রণ — Socket.IO data বাংলায়।

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

Socket.IO-তে event-এর সাথে যেকোনো JSON-serializable ডেটা অথবা binary পাঠানো যায়। কয়েকটা topic-এ একসাথে ডেটা পাঠানোর সুবিধাটা বুঝে নেওয়া যাক।

শেখার লক্ষ্য

  • কোন কোন type-এর ডেটা পাঠানো যায় তা জানা
  • একাধিক argument দেওয়া
  • Binary (files, audio, image) পাঠানো
  • বড় payload-এর সীমা নিয়ন্ত্রণ করা

কী কী পাঠানো যায়?

Typeউদাহরণ
string"hello"
number42
booleantrue
object{ user: "রহিম", score: 10 }
array["a", "b", "c"]
Buffer / ArrayBufferimage, audio bytes
null / undefinedখালি পেলোড

একাধিক Argument

multi-argjavascript
javascript
// server
socket.on("giveMeData", (name, age, active) => {
  console.log(name, age, active); // রহিম 25 true
});

// client
socket.emit("giveMeData", "রহিম", 25, true);

একটার মধ্যে সব রেখে object পাঠানোও সমান ভালো। ৩-এর বেশি argument হলে object ব্যবহার করা cleaner — ভবিষ্যতে field যোগ/বাদ পড়লে client-server contract এত fragile থাকে না।

Line-by-line: data validation

server handleMessagejavascript
javascript
socket.on("newMessage", (data) => {
  // 1. check: data object কি না
  if (!data || typeof data !== "object") return;

  // 2. field sanitize
  const text = String(data.text || "").slice(0, 500);
  const user = String(data.user || "anonymous").slice(0, 50);

  if (!text.trim()) return; // খালি message ignore

  io.emit("newMessage", { user, text });
});
  • আগে validate — client-এর থেকে যা-ই আসে তা বিশ্বাস-যোগ্য না; type-check অপরিহার্য
  • Length limit — text.slice(0, 500) বড়/ফেক payload ঠেকায়
  • trim — খালি বার্তা broadcast-এ আটকায়
Input validate অপরিহার্য

socket.broadcast.emit-এর আগে input validate করার উপর বেশি জোর দিন। client-এর পাঠানো object-এর property-তে access-এর আগেই check না করলে crash হতে পারে। Security সম্পর্কে: Best Practices।

Binary Data পাঠানো

Socket.IO binary payload support করে — Buffer (Node) / ArrayBuffer, Blob (browser):

client uploadjavascript
javascript
// client — file পাঠানো
const fileInput = document.querySelector("input[type=file]");

fileInput.addEventListener("change", (e) => {
  const file = e.target.files[0];
  const reader = new FileReader();

  reader.onload = () => {
    // মেটাডেটা + bytes arrayBuffer
    socket.emit("upload", {
      name: file.name,
      size: file.size,
      data: reader.result,
    });
  };

  reader.readAsArrayBuffer(file);
});
serverjavascript
javascript
socket.on("upload", ({ name, size, data }) => {
  console.log("File:", name, "| size:", size);
  // অন্য sockets-এ forward
  socket.broadcast.emit("upload", {
    name,
    size,
    data, // Buffer object
  });
});
Binary handling

ডিফল্ট maxHttpBufferSize 1 MB — এর চেয়ে বড় file পাঠাতে server option-এ limit বাড়াতে হবে (নিচে)। তবে production-এ বড় file সাধারণত REST/object storage (S3 ইত্যাদি) দিয়ে upload হয়, socket শুধু notify করে — এই pattern-ই বেশি প্রচলিত।

বড় Payload নিয়ন্ত্রণ

server maxHttpBufferSizejavascript
javascript
const io = new Server(3000, {
  cors: { origin: "*" },
  // ডিফল্ট 1 MB (10^6) — প্রয়োজনে বাড়ান
  maxHttpBufferSize: 5 * 1024 * 1024, // 5 MB
});
  • এই সীমার উপরে গেলে connection error নিয়ে event fail হয়
  • খুব ছোট সীমা রাখলে legit data-ও কাটা পড়তে পারে — use case অনুযায়ী সমন্বয়

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

  • Function / circular object পাঠানো — serialization fail; plain data-ই রাখুন
  • undefined item-এ access — server-এ type guard না দিলে crash
  • Large binary default limit — maxHttpBufferSize না বাড়ালে silently drop

Practice Task

  • client থেকে { user, text }-এর object পাঠিয়ে server-এ validate-সহ echo করুন
  • 2MB-এর একটি file upload করুন — প্রথমে default limit এ কী হয় দেখুন, তারপর 5MB limit দিয়ে
  • multi-argument vs object — কোনটা code-এ বুঝতে সহজ, নিজেই লক্ষ্য করুন

সম্পর্কিত অধ্যায়: Events · Broadcasting Events · Acknowledgements

শেষ প্যারায় নিজে practice করুন — কোড কপি করে নিজের এডিটরে চালিয়ে দেখুন।
আগেরSocket.IO Emitting and Listening to EventsপরেরSocket.IO Broadcasting Events
এই পেজে
Tech Tutor

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

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

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

mdanamolhasan1998@gmail.com