Socket.IO তে Specific Rooms এ Broadcasting করার মাধ্যমে আপনি নির্দিষ্ট রুমে থাকা ক্লায়েন্টদের মধ্যে ইভেন্ট বা বার্তা পাঠাতে পারেন। এটি বিশেষভাবে দরকারী যখন আপনি চান কিছু নির্দিষ্ট গ্রুপের মধ্যে যোগাযোগ পরিচালনা করতে, যেমন একটি চ্যাট রুমে বার্তা পাঠানো বা একটি মাল্টিপ্লেয়ার গেমে নির্দিষ্ট প্লেয়ারদের মধ্যে তথ্য শেয়ার করা।
Socket.IO-তে একটি "রুম" হল একটি ভার্চুয়াল গ্রুপ, যেখানে একাধিক ক্লায়েন্ট যুক্ত হতে পারে এবং সার্ভার সেই রুমে থাকা সবাইকে একসাথে ইভেন্ট বা বার্তা পাঠাতে পারে। রুমে সদস্য যোগ/ত্যাগ করা এবং নির্দিষ্ট রুমে ইভেন্ট পাঠানো খুবই সহজ।
Specific Room এ Broadcasting করার প্রক্রিয়া
- ক্লায়েন্টকে রুমে যোগ করা: সার্ভার একটি রুমে ক্লায়েন্টকে যোগ করে।
- রুমে Broadcasting: সার্ভার একটি নির্দিষ্ট রুমে সমস্ত সদস্যকে ব্রডকাস্ট (একসাথে বার্তা পাঠানো) করতে পারে।
- রুমে সদস্যদের সুনির্দিষ্ট বার্তা পাঠানো: সার্ভার নির্দিষ্ট রুমে থাকা ক্লায়েন্টদের জন্য একটি নির্দিষ্ট ইভেন্ট বা বার্তা পাঠায়।
Specific Room এ Broadcasting উদাহরণ
Server-Side (Node.js)
const http = require('http');
const socketIo = require('socket.io');
const server = http.createServer((req, res) => {
res.end('Hello, Socket.IO with Specific Room Broadcasting!');
});
const io = socketIo(server);
// ক্লায়েন্টকে একটি রুমে যোগ করা
io.on('connection', (socket) => {
console.log('A user connected');
// ক্লায়েন্টকে একটি রুমে যোগ করা
socket.on('join room', (roomName) => {
socket.join(roomName);
console.log(`User joined room: ${roomName}`);
});
// নির্দিষ্ট রুমে বার্তা পাঠানো
socket.on('send message', (roomName, message) => {
// নির্দিষ্ট রুমে সমস্ত সদস্যকে বার্তা পাঠানো
io.to(roomName).emit('receive message', message);
console.log(`Message sent to room ${roomName}: ${message}`);
});
// ডিসকানেক্ট হলে রুম ছাড়ানো
socket.on('disconnect', () => {
console.log('User disconnected');
});
});
server.listen(3000, () => {
console.log('Server is running on http://localhost:3000');
});Client-Side (HTML + JavaScript)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Socket.IO Specific Room Broadcasting</title>
<script src="https://cdn.socket.io/4.1.3/socket.io.min.js"></script>
<script>
const socket = io('http://localhost:3000');
// রুমে যোগ দেয়া
function joinRoom() {
const roomName = document.getElementById('room').value;
socket.emit('join room', roomName);
console.log(`Joined room: ${roomName}`);
}
// বার্তা পাঠানো
function sendMessage() {
const roomName = document.getElementById('room').value;
const message = document.getElementById('message').value;
socket.emit('send message', roomName, message);
}
// বার্তা গ্রহণ করা
socket.on('receive message', (message) => {
console.log('Received message:', message);
const messageContainer = document.getElementById('messages');
const newMessage = document.createElement('li');
newMessage.textContent = message;
messageContainer.appendChild(newMessage);
});
</script>
</head>
<body>
<h1>Socket.IO Specific Room Broadcasting</h1>
<input type="text" id="room" placeholder="Room Name">
<button onclick="joinRoom()">Join Room</button>
<input type="text" id="message" placeholder="Enter message">
<button onclick="sendMessage()">Send Message</button>
<ul id="messages"></ul>
</body>
</html>ব্যাখ্যা:
- ক্লায়েন্টের রুমে যোগ দেওয়া: ক্লায়েন্ট একটি রুমের নাম ইনপুট করে এবং সার্ভার সেই রুমে ক্লায়েন্টকে যোগ করে। রুমের নামের উপর ভিত্তি করে সার্ভার একটি নতুন রুম তৈরি করে এবং ক্লায়েন্ট সেই রুমের অংশ হয়ে যায়।
- Specific Room এ বার্তা পাঠানো: ক্লায়েন্ট যখন
send messageইভেন্ট প্রেরণ করে, তখন সার্ভার সেই বার্তা নির্দিষ্ট রুমে থাকা সকল সদস্যকে পাঠায়। এটিio.to(roomName).emit('receive message', message)ব্যবহার করে করা হয়। - বার্তা গ্রহণ করা: সার্ভার যখন একটি নির্দিষ্ট রুমে বার্তা পাঠায়, তখন ঐ রুমে থাকা সব ক্লায়েন্ট সেই বার্তা গ্রহণ করে। ক্লায়েন্ট
receive messageইভেন্টের মাধ্যমে এই বার্তা গ্রহণ করে এবং কনসোল বা ওয়েবপেজে প্রদর্শন করে।
সারাংশ:
- Specific Room এ Broadcasting এর মাধ্যমে আপনি নির্দিষ্ট গ্রুপ বা রুমের মধ্যে ইভেন্ট বা বার্তা শেয়ার করতে পারেন।
- সার্ভার
socket.join(roomName)ব্যবহার করে ক্লায়েন্টকে রুমে যোগ করতে পারে এবংio.to(roomName).emit()ব্যবহার করে সেই রুমে থাকা সকল ক্লায়েন্টকে বার্তা পাঠাতে পারে। - এই পদ্ধতিটি চ্যাট অ্যাপ্লিকেশন, মাল্টিপ্লেয়ার গেমস, লাইভ ডেটা স্ট্রিমিং, এবং কাস্টম গ্রুপ চ্যাট তৈরির জন্য অত্যন্ত উপকারী।
Content added By
Read more