Socket.IO এর মাধ্যমে emit এবং on এর সাহায্যে ক্লায়েন্ট এবং সার্ভারের মধ্যে ডেটা আদান-প্রদান করা হয়। emit ফাংশন ডেটা পাঠানোর জন্য ব্যবহৃত হয়, এবং on ফাংশন ডেটা গ্রহণ করার জন্য ব্যবহৃত হয়। এটি ইভেন্ট-ভিত্তিক পদ্ধতিতে কাজ করে, যেখানে নির্দিষ্ট ইভেন্ট ট্রিগার করা হয় এবং ডেটা পাঠানো হয় বা গ্রহণ করা হয়।
এখানে emit এবং on ব্যবহার করে ডেটা আদান-প্রদান করার একটি উদাহরণ দেওয়া হলো:
1. সার্ভার সাইড (Node.js)
socket.emit() এবং socket.on() এর মাধ্যমে সার্ভার সাইডে ডেটা পাঠানো এবং গ্রহণ করা যায়।
সার্ভার সাইড কোড:
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);
io.on('connection', (socket) => {
console.log('A user connected');
// ক্লায়েন্টে ডেটা পাঠানো (emit)
socket.emit('welcomeMessage', 'Welcome to the Socket.IO Server!');
// ক্লায়েন্ট থেকে ডেটা গ্রহণ করা (on)
socket.on('clientMessage', (data) => {
console.log('Received from client: ' + data);
});
// ক্লায়েন্ট ডিসকানেক্ট হলে
socket.on('disconnect', () => {
console.log('A user disconnected');
});
});
// সার্ভার 3000 পোর্টে চলবে
server.listen(3000, () => {
console.log('Server is running on http://localhost:3000');
});- এখানে,
socket.emit('welcomeMessage', 'Welcome to the Socket.IO Server!')সার্ভার থেকে ক্লায়েন্টে একটি ওয়েলকাম মেসেজ পাঠাচ্ছে। socket.on('clientMessage', callback)ব্যবহার করে ক্লায়েন্ট থেকে কোনো ডেটা গ্রহণ করা হচ্ছে এবং সেটি কনসোলে প্রদর্শন করা হচ্ছে।
2. ক্লায়েন্ট সাইড (HTML + JavaScript)
ক্লায়েন্ট সাইডে socket.emit() এবং socket.on() ব্যবহার করে সার্ভার থেকে ডেটা গ্রহণ এবং পাঠানো যায়।
ক্লায়েন্ট সাইড কোড:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Socket.IO Client</title>
<script src="/socket.io/socket.io.js"></script>
</head>
<body>
<h1>Socket.IO Client</h1>
<div id="messages"></div>
<button onclick="sendMessage()">Send Message to Server</button>
<script>
// সার্ভারের সাথে কানেক্ট করা
var socket = io();
// সার্ভার থেকে ডেটা গ্রহণ করা
socket.on('welcomeMessage', function (data) {
document.getElementById('messages').innerHTML = data;
});
// সার্ভারে ডেটা পাঠানো
function sendMessage() {
socket.emit('clientMessage', 'Hello from the client!');
}
</script>
</body>
</html>socket.on('welcomeMessage', callback)সার্ভার থেকে পাঠানো ওয়েলকাম মেসেজ গ্রহণ করে এবংdocument.getElementById('messages').innerHTMLদিয়ে HTML পৃষ্ঠায় প্রদর্শন করে।socket.emit('clientMessage', 'Hello from the client!')ক্লায়েন্ট থেকে সার্ভারে একটি মেসেজ পাঠায়।
3. ফ্লো এবং ব্যাখ্যা:
- ক্লায়েন্ট সার্ভারে কানেক্ট হওয়া: যখন ক্লায়েন্ট প্রথম সার্ভারের সাথে কানেক্ট করে,
connectionইভেন্টটি ট্রিগার হয় এবং একটি নতুনsocketতৈরি হয়। - ডেটা পাঠানো (emit): সার্ভার
socket.emit()ব্যবহার করে ক্লায়েন্টকে একটি মেসেজ পাঠায়। উদাহরণস্বরূপ, সার্ভার'welcomeMessage'ইভেন্টের মাধ্যমে ক্লায়েন্টে মেসেজ পাঠাচ্ছে। - ডেটা গ্রহণ (on): ক্লায়েন্ট
socket.on()ব্যবহার করে সার্ভার থেকে পাঠানো ডেটা গ্রহণ করে এবং সেটি কনসোলে বা HTML পৃষ্ঠায় প্রদর্শন করে। উদাহরণস্বরূপ, ক্লায়েন্ট'welcomeMessage'ইভেন্টে সার্ভারের মেসেজ গ্রহণ করছে। - ক্লায়েন্ট থেকে ডেটা পাঠানো (emit): ক্লায়েন্ট
socket.emit()ব্যবহার করে সার্ভারে মেসেজ পাঠায়। উদাহরণস্বরূপ, ক্লায়েন্ট'clientMessage'ইভেন্টে একটি মেসেজ পাঠাচ্ছে। - ক্লায়েন্ট থেকে ডেটা গ্রহণ (on): সার্ভার
socket.on()ব্যবহার করে ক্লায়েন্ট থেকে পাঠানো ডেটা গ্রহণ করে এবং সেটি কনসোলে প্রদর্শন করে।
সারসংক্ষেপ:
socket.emit(): ডেটা পাঠানোর জন্য ব্যবহৃত হয়, যেমন সার্ভার ক্লায়েন্টে মেসেজ পাঠানো বা ক্লায়েন্ট সার্ভারে ডেটা পাঠানো।socket.on(): ডেটা গ্রহণ করার জন্য ব্যবহৃত হয়, যেমন ক্লায়েন্ট সার্ভার থেকে মেসেজ গ্রহণ করা বা সার্ভার ক্লায়েন্ট থেকে মেসেজ গ্রহণ করা।
এইভাবে, emit এবং on এর মাধ্যমে আমরা সহজেই Socket.IO এর সাহায্যে ক্লায়েন্ট এবং সার্ভারের মধ্যে রিয়েল-টাইম ডেটা আদান-প্রদান করতে পারি।
Read more