Rooms হলো Socket.IO-এর একটি বৈশিষ্ট্য যা একটি নেমস্পেসের মধ্যে ক্লায়েন্টদের গ্রুপ করতে সাহায্য করে। আপনি একটি রুম তৈরি করতে পারেন এবং ক্লায়েন্টদের সেই রুমে যোগ করতে পারেন, এবং সেই রুমের মধ্যে শুধুমাত্র সেই রুমের সদস্যরা একে অপরের সাথে যোগাযোগ করতে সক্ষম হবে। একাধিক রুম ব্যবহার করার মাধ্যমে আপনি বিভিন্ন গ্রুপে বা প্রক্রিয়ায় ডেটা বা বার্তা ভাগ করতে পারেন।
Socket.IO-তে রুম ব্যবহার করলে, আপনি কেবল একটি নির্দিষ্ট রুমের মধ্যে ইভেন্ট পাঠাতে পারেন এবং ক্লায়েন্টদের নির্দিষ্ট রুমে যোগ বা বাদ দিতে পারেন। এটি চ্যাট অ্যাপ্লিকেশন, গেমিং, বা অন্যান্য প্রয়োজনে কার্যকরী।
1. Multiple Rooms Management
Socket.IO তে রুম ব্যবস্থাপনা করার জন্য কিছু গুরুত্বপূর্ণ পদ্ধতি রয়েছে:
socket.join(roomName): একটি নির্দিষ্ট রুমে ক্লায়েন্টকে যোগ করা।socket.leave(roomName): একটি নির্দিষ্ট রুম থেকে ক্লায়েন্টকে বের করা।io.to(roomName).emit(eventName, data): একটি নির্দিষ্ট রুমে সমস্ত ক্লায়েন্টকে একটি ইভেন্ট পাঠানো।io.sockets.adapter.rooms: রুমের সমস্ত সদস্যের তথ্য পাওয়া যায়।
2. Multiple Rooms Example
এখানে একটি উদাহরণ দেওয়া হলো, যেখানে Socket.IO তে একাধিক রুম তৈরি করা এবং ক্লায়েন্টদের সেই রুমে যোগ করা ও বার্তা পাঠানো হয়েছে।
Server-Side (Node.js with Socket.IO)
const http = require('http');
const socketIo = require('socket.io');
// HTTP সার্ভার তৈরি
const server = http.createServer((req, res) => {
res.end('Socket.IO Multiple Rooms Example');
});
// Socket.IO সার্ভার ইনিশিয়ালাইজ
const io = socketIo(server);
// ক্লায়েন্ট কানেক্ট হলে
io.on('connection', (socket) => {
console.log('A user connected');
// ক্লায়েন্ট একটি রুমে যোগ করতে চাইলে
socket.on('joinRoom', (roomName) => {
socket.join(roomName);
console.log(`User joined room: ${roomName}`);
socket.emit('message', `You have joined room: ${roomName}`);
});
// ক্লায়েন্ট একটি রুম থেকে বের হতে চাইলে
socket.on('leaveRoom', (roomName) => {
socket.leave(roomName);
console.log(`User left room: ${roomName}`);
socket.emit('message', `You have left room: ${roomName}`);
});
// একটি রুমের সমস্ত সদস্যকে বার্তা পাঠানো
socket.on('sendMessageToRoom', (roomName, message) => {
console.log(`Sending message to room ${roomName}: ${message}`);
io.to(roomName).emit('message', message);
});
// ক্লায়েন্ট ডিসকানেক্ট হলে
socket.on('disconnect', () => {
console.log('User disconnected');
});
});
// সার্ভার চালু
server.listen(3000, () => {
console.log('Server running on http://localhost:3000');
});Client-Side (HTML + JavaScript with Socket.IO)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Socket.IO Multiple Rooms Example</title>
<script src="/socket.io/socket.io.js"></script>
<script>
const socket = io();
// রুমে যোগ করার ফাংশন
function joinRoom() {
const roomName = document.getElementById('roomName').value;
socket.emit('joinRoom', roomName);
document.getElementById('messageArea').innerText = `Joined room: ${roomName}`;
}
// রুম থেকে বের হওয়ার ফাংশন
function leaveRoom() {
const roomName = document.getElementById('roomName').value;
socket.emit('leaveRoom', roomName);
document.getElementById('messageArea').innerText = `Left room: ${roomName}`;
}
// রুমে বার্তা পাঠানোর ফাংশন
function sendMessageToRoom() {
const roomName = document.getElementById('roomName').value;
const message = document.getElementById('message').value;
socket.emit('sendMessageToRoom', roomName, message);
document.getElementById('message').value = ''; // মেসেজ ইনপুট ফিল্ড ক্লিয়ার করা
}
// সার্ভার থেকে বার্তা গ্রহণ করা
socket.on('message', (message) => {
document.getElementById('messageArea').innerText = message;
});
</script>
</head>
<body>
<h1>Socket.IO Multiple Rooms Example</h1>
<input type="text" id="roomName" placeholder="Room Name">
<button onclick="joinRoom()">Join Room</button>
<button onclick="leaveRoom()">Leave Room</button>
<h2>Send Message to Room</h2>
<input type="text" id="message" placeholder="Type your message">
<button onclick="sendMessageToRoom()">Send Message</button>
<h3>Messages:</h3>
<div id="messageArea"></div>
</body>
</html>3. কীভাবে রুম ব্যবহার করা যায়
socket.join(roomName): এই মেথডের মাধ্যমে ক্লায়েন্ট একটি রুমে যোগ করতে পারে। এখানেroomNameহল রুমের নাম। একবার যোগ দিলে, সেই রুমের সদস্য হিসেবে ক্লায়েন্ট চিহ্নিত হবে।socket.leave(roomName): এই মেথডের মাধ্যমে ক্লায়েন্ট একটি রুম থেকে বের হয়ে যাবে।io.to(roomName).emit('event', data): এই মেথডের মাধ্যমে একটি নির্দিষ্ট রুমে ইভেন্ট পাঠানো হয়। এখানেroomNameহল রুমের নাম এবংdataহল পাঠানো ডেটা।socket.emit('event', data): এই মেথডে ক্লায়েন্ট নিজেই ইভেন্ট পাঠাতে পারে।
4. ব্যবস্থাপনা
- একাধিক রুম: একাধিক রুম তৈরি করা সহজ, এবং প্রতিটি রুম আলাদা আলাদা গ্রুপ বা সংযোগ হতে পারে। এতে আপনি আলাদা আলাদা বিষয় বা গ্রুপ নিয়ে কাজ করতে পারেন।
- রুমের সদস্য পরিবর্তন: ক্লায়েন্ট একটি রুমে যোগ বা বের হলে, আপনি রুমের সদস্যের সংখ্যা জানতে পারবেন এবং সেই অনুযায়ী তাদের সাথে ইন্টারঅ্যাক্ট করতে পারবেন।
- রুমে ইভেন্ট পাঠানো: একটি রুমের সমস্ত ক্লায়েন্টকে একই ইভেন্ট বা বার্তা পাঠানো যায়। উদাহরণস্বরূপ, একটি চ্যাট রুমের সমস্ত সদস্যকে একই বার্তা পাঠানো।
সারসংক্ষেপ
- Multiple Rooms ব্যবস্থাপনা Socket.IO-তে অত্যন্ত সুবিধাজনক, যেখানে আপনি বিভিন্ন রুমে ক্লায়েন্টদের গ্রুপ করতে পারেন এবং প্রতিটি রুমের জন্য আলাদা আলাদা বার্তা বা ইভেন্ট পাঠাতে পারেন।
- এটি বিশেষভাবে দরকারি যখন আপনি চ্যাট রুম, গেমিং রুম, বা বিভিন্ন ধরনের ইন্টারঅ্যাকশন পরিচালনা করতে চান।
socket.join(),socket.leave(), এবংio.to(roomName).emit()মেথডের মাধ্যমে আপনি রুমের সদস্যদের সহজে পরিচালনা করতে পারবেন।
Read more