Socket.IO এ join() এবং leave() মেথডগুলি ব্যবহার করে ক্লায়েন্টরা রুম-এ যোগ দিতে পারে এবং রুম থেকে ত্যাগ করতে পারে। রুম হল একটি লজিক্যাল চ্যানেল যেখানে একাধিক ক্লায়েন্ট একে অপরের সাথে যোগাযোগ করতে পারে। ক্লায়েন্ট একটি রুমে যোগ দিতে পারে এবং রুমে থাকা অন্য সকলের সাথে বার্তা বা ডেটা শেয়ার করতে পারে।
এখানে join() এবং leave() মেথডের মাধ্যমে রুমে যোগদান এবং ত্যাগ করার উদাহরণ দেওয়া হলো:
1. join() মেথড: ক্লায়েন্টকে রুমে যোগদান করানো
join() মেথডটি একটি ক্লায়েন্টকে নির্দিষ্ট একটি রুমে যোগদান করাতে ব্যবহৃত হয়। যখন ক্লায়েন্ট একটি রুমে যোগ দেয়, তখন সে সেই রুমে থাকা অন্য ক্লায়েন্টদের সাথে যোগাযোগ করতে সক্ষম হয়।
সার্ভার সাইড (Node.js):
const http = require('http');
const socketIo = require('socket.io');
// HTTP সার্ভার তৈরি করা
const server = http.createServer((req, res) => {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Socket.IO Server');
});
// Socket.IO সার্ভার তৈরি করা
const io = socketIo(server);
// Default Namespace '/'
// ক্লায়েন্ট কানেক্ট হলে
io.on('connection', (socket) => {
console.log('A user connected');
// ক্লায়েন্টকে একটি রুমে যোগদান করানো
socket.on('joinRoom', (roomName) => {
console.log(`User joined room: ${roomName}`);
socket.join(roomName); // ক্লায়েন্টকে রুমে যোগদান করানো
// রুমে থাকা সকল ক্লায়েন্টকে মেসেজ পাঠানো
io.to(roomName).emit('message', `A new user has joined the room: ${roomName}`);
});
// ডিসকানেক্ট হলে
socket.on('disconnect', () => {
console.log('A user disconnected');
});
});
// সার্ভার 3000 পোর্টে চলবে
server.listen(3000, () => {
console.log('Server is running on http://localhost:3000');
});ক্লায়েন্ট সাইড (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 Room Join</title>
<script src="/socket.io/socket.io.js"></script>
</head>
<body>
<h1>Join a Room</h1>
<div id="messages"></div>
<input type="text" id="roomName" placeholder="Enter room name">
<button onclick="joinRoom()">Join Room</button>
<script>
var socket = io();
// সার্ভার থেকে মেসেজ গ্রহণ করা
socket.on('message', function (data) {
document.getElementById('messages').innerHTML = data;
});
// রুমে যোগদান করা
function joinRoom() {
var roomName = document.getElementById('roomName').value;
socket.emit('joinRoom', roomName); // রুমে যোগদান
}
</script>
</body>
</html>এখানে, ক্লায়েন্ট joinRoom ইভেন্ট পাঠিয়ে একটি রুমে যোগদান করতে পারে, এবং সার্ভার socket.join(roomName) মেথড ব্যবহার করে ক্লায়েন্টকে রুমে যোগদান করায়। পরে সার্ভার রুমে থাকা অন্য সকল ক্লায়েন্টকে মেসেজ পাঠায়।
2. leave() মেথড: ক্লায়েন্টকে রুম থেকে ত্যাগ করানো
leave() মেথডটি একটি ক্লায়েন্টকে একটি নির্দিষ্ট রুম থেকে ত্যাগ করাতে ব্যবহৃত হয়। এটি ক্লায়েন্টের রুম থেকে বের হয়ে যাওয়ার সময় ব্যবহার হয়, যাতে সে আর রুমের মধ্যে থাকা অন্য ক্লায়েন্টদের সাথে যোগাযোগ করতে না পারে।
সার্ভার সাইড (Node.js):
io.on('connection', (socket) => {
console.log('A user connected');
// ক্লায়েন্টকে একটি রুমে যোগদান করানো
socket.on('joinRoom', (roomName) => {
console.log(`User joined room: ${roomName}`);
socket.join(roomName); // ক্লায়েন্টকে রুমে যোগদান করানো
io.to(roomName).emit('message', `A new user has joined the room: ${roomName}`);
});
// ক্লায়েন্টকে একটি রুম থেকে ত্যাগ করানো
socket.on('leaveRoom', (roomName) => {
console.log(`User left room: ${roomName}`);
socket.leave(roomName); // ক্লায়েন্টকে রুম থেকে ত্যাগ করানো
io.to(roomName).emit('message', `A user has left the room: ${roomName}`);
});
// ডিসকানেক্ট হলে
socket.on('disconnect', () => {
console.log('A user disconnected');
});
});ক্লায়েন্ট সাইড (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 Room Leave</title>
<script src="/socket.io/socket.io.js"></script>
</head>
<body>
<h1>Leave a Room</h1>
<div id="messages"></div>
<input type="text" id="roomName" placeholder="Enter room name">
<button onclick="joinRoom()">Join Room</button>
<button onclick="leaveRoom()">Leave Room</button>
<script>
var socket = io();
// সার্ভার থেকে মেসেজ গ্রহণ করা
socket.on('message', function (data) {
document.getElementById('messages').innerHTML = data;
});
// রুমে যোগদান করা
function joinRoom() {
var roomName = document.getElementById('roomName').value;
socket.emit('joinRoom', roomName);
}
// রুম থেকে ত্যাগ করা
function leaveRoom() {
var roomName = document.getElementById('roomName').value;
socket.emit('leaveRoom', roomName); // রুম থেকে ত্যাগ করা
}
</script>
</body>
</html>এখানে, ক্লায়েন্ট leaveRoom ইভেন্ট ব্যবহার করে একটি রুম থেকে ত্যাগ করতে পারে, এবং সার্ভার socket.leave(roomName) মেথড ব্যবহার করে ক্লায়েন্টকে রুম থেকে বের করে দেয়।
3. join() এবং leave() এর মাধ্যমে রুমে মেসেজ পাঠানো
যখন একটি ক্লায়েন্ট একটি রুমে যোগ দেয় বা ত্যাগ করে, তখন সার্ভার ঐ রুমের মধ্যে থাকা অন্য ক্লায়েন্টদের কাছে মেসেজ পাঠাতে পারে।
// রুমে যোগদান/ত্যাগের সময় মেসেজ পাঠানো
io.to(roomName).emit('message', `User has joined/left the room: ${roomName}`);এটি to() মেথড ব্যবহার করে একটি নির্দিষ্ট রুমের মধ্যে থাকা সকল ক্লায়েন্টকে মেসেজ পাঠাতে সক্ষম।
সারসংক্ষেপ
join(): ক্লায়েন্টকে একটি নির্দিষ্ট রুমে যোগদান করানোর জন্য ব্যবহৃত হয়।leave(): ক্লায়েন্টকে একটি নির্দিষ্ট রুম থেকে ত্যাগ করানোর জন্য ব্যবহৃত হয়।
এগুলি Socket.IO এ রুম ব্যবহার করার সহজ উপায় প্রদান করে, যা একাধিক ক্লায়েন্টের মধ্যে কার্যকর যোগাযোগ এবং বার্তা আদান-প্রদান করার জন্য সাহায্য করে।
Read more