Copyright© 2025 Rayhan Kobir

LinkedInGithubLetCode
Node.js-এ WebRTC সেটআপ

Node.js-এ WebRTC সেটআপ

June 18, 2024 (1 year ago)

WebRTC (Web Real-Time Communication) ব্যবহার করে আপনি ব্রাউজার বা অ্যাপ্লিকেশনের মধ্যে সরাসরি অডিও, ভিডিও ও ডেটা আদান-প্রদান করতে পারেন। Node.js-এ WebRTC সেটআপ করতে হলে সাধারণত signaling server, peer connection এবং মিডিয়া হ্যান্ডলিং নিয়ে কাজ করতে হয়।

Step 1: Signaling Server তৈরি

Signaling server পিয়ারগুলোর মধ্যে কানেকশন সেটআপ, অফার/আনসার ও আইস ক্যান্ডিডেট এক্সচেঞ্জের জন্য ব্যবহৃত হয়। Node.js-এ Express ও Socket.io দিয়ে সহজেই signaling server তৈরি করা যায়।

// Express ও Socket.io দিয়ে signaling server
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) => {
  socket.on("signal", (data) => {
    socket.broadcast.emit("signal", data);
  });
});
 
server.listen(3000, () => {
  console.log("Signaling server running on port 3000");
});

Step 2: ক্লায়েন্ট সাইড WebRTC কানেকশন

ক্লায়েন্ট সাইডে, WebRTC API ব্যবহার করে peer connection তৈরি করতে হবে এবং signaling server-এর মাধ্যমে অফার, আনসার ও আইস ক্যান্ডিডেট এক্সচেঞ্জ করতে হবে।

// ক্লায়েন্ট সাইড উদাহরণ (ব্রাউজার)
const socket = io("http://localhost:3000");
const peer = new RTCPeerConnection();
 
peer.onicecandidate = (event) => {
  if (event.candidate) {
    socket.emit("signal", { candidate: event.candidate });
  }
};
 
socket.on("signal", async (data) => {
  if (data.offer) {
    await peer.setRemoteDescription(new RTCSessionDescription(data.offer));
    const answer = await peer.createAnswer();
    await peer.setLocalDescription(answer);
    socket.emit("signal", { answer });
  } else if (data.answer) {
    await peer.setRemoteDescription(new RTCSessionDescription(data.answer));
  } else if (data.candidate) {
    await peer.addIceCandidate(new RTCIceCandidate(data.candidate));
  }
});

Step 3: মিডিয়া হ্যান্ডলিং

ক্লায়েন্ট সাইডে, ইউজারের ক্যামেরা ও মাইক্রোফোন থেকে মিডিয়া স্ট্রিম নিয়ে peer connection-এ যোগ করতে পারেন।

navigator.mediaDevices
  .getUserMedia({ video: true, audio: true })
  .then((stream) => {
    stream.getTracks().forEach((track) => peer.addTrack(track, stream));
  });

উপসংহার:
Node.js-এ WebRTC সেটআপ করতে signaling server, peer connection এবং মিডিয়া হ্যান্ডলিং-এর সমন্বয় দরকার। এইভাবে আপনি সহজেই রিয়েল-টাইম ভিডিও/অডিও চ্যাট, লাইভ স্ট্রিমিং বা ডেটা শেয়ারিং অ্যাপ্লিকেশন

Back