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 এবং মিডিয়া হ্যান্ডলিং-এর সমন্বয় দরকার। এইভাবে আপনি সহজেই রিয়েল-টাইম ভিডিও/অডিও চ্যাট, লাইভ স্ট্রিমিং বা ডেটা শেয়ারিং অ্যাপ্লিকেশন