Server এবং Client এর মধ্যে Message আদান-প্রদান

Socket.IO এর মাধ্যমে Chat Application তৈরি (বেসিক চ্যাট অ্যাপ্লিকেশন তৈরি) - সকেট.আইও (Socket.IO) - Computer Programming

262

Socket.IO হল একটি লাইব্রেরি যা ক্লায়েন্ট এবং সার্ভারের মধ্যে রিয়েল-টাইম ডেটা আদান-প্রদান করতে ব্যবহৃত হয়। এটি WebSockets বা Polling ব্যবহার করে event-driven communication তৈরি করে, যা ক্লায়েন্ট এবং সার্ভারের মধ্যে দ্রুত এবং দ্বৈত দিকের যোগাযোগের সুবিধা দেয়।

Socket.IO ব্যবহার করে, আপনি সহজে Server এবং Client এর মধ্যে মেসেজ আদান-প্রদান করতে পারেন। এখানে আমরা একটি simple chat application এর মাধ্যমে দেখব কীভাবে Socket.IO এর মাধ্যমে Server এবং Client এর মধ্যে মেসেজ পাঠানো এবং গ্রহণ করা হয়।


1. Socket.IO সার্ভার এবং ক্লায়েন্ট সেটআপ

1.1 Socket.IO Server Setup (Node.js)

প্রথমে, Socket.IO ইনস্টল করুন। এটি npm (Node Package Manager) এর মাধ্যমে করা যেতে পারে।

npm install socket.io

এরপর, 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);

// ক্লায়েন্ট কানেক্ট হলে
io.on('connection', (socket) => {
  console.log('A user connected');
  
  // ক্লায়েন্ট থেকে মেসেজ গ্রহণ করা
  socket.on('chatMessage', (msg) => {
    console.log('Message from client:', msg);
    
    // ক্লায়েন্টে মেসেজ পাঠানো
    socket.emit('serverMessage', 'Hello from the server!');
  });
  
  // ডিসকানেক্ট হলে
  socket.on('disconnect', () => {
    console.log('A user disconnected');
  });
});

// সার্ভার 3000 পোর্টে চলবে
server.listen(3000, () => {
  console.log('Server running on http://localhost:3000');
});

এখানে, সার্ভারে io.on('connection') ব্যবহার করে ক্লায়েন্ট কানেক্ট হলে একটি কলব্যাক ফাংশন রান করে, যা ক্লায়েন্টের সাথে ডেটা আদান-প্রদান করতে সহায়ক।

1.2 Socket.IO Client Setup (HTML + JavaScript)

এখন ক্লায়েন্ট সাইড তৈরি করুন যেখানে সার্ভারের সাথে যোগাযোগ করা হবে। ক্লায়েন্ট সাইডে socket.io.js লাইব্রেরি ব্যবহার করা হয়, যা 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 Chat</title>
  <script src="/socket.io/socket.io.js"></script>
</head>
<body>
  <h1>Socket.IO Chat Application</h1>
  <div id="messages"></div>
  <input type="text" id="chatInput" placeholder="Type a message">
  <button onclick="sendMessage()">Send</button>

  <script>
    // সার্ভারের সাথে কানেকশন তৈরি
    var socket = io('http://localhost:3000');

    // সার্ভার থেকে মেসেজ গ্রহণ
    socket.on('serverMessage', function (data) {
      var messagesDiv = document.getElementById('messages');
      messagesDiv.innerHTML += '<p>' + data + '</p>';
    });

    // মেসেজ পাঠানোর ফাংশন
    function sendMessage() {
      var message = document.getElementById('chatInput').value;
      socket.emit('chatMessage', message);  // সার্ভারে মেসেজ পাঠানো
    }
  </script>
</body>
</html>

এখানে, ক্লায়েন্ট socket.emit('chatMessage', message) দিয়ে সার্ভারে মেসেজ পাঠাচ্ছে এবং socket.on('serverMessage', callback) দিয়ে সার্ভার থেকে আসা মেসেজ গ্রহণ করছে।


2. Message আদান-প্রদান ফ্লো

2.1 Client থেকে Server এ মেসেজ পাঠানো

  1. ক্লায়েন্ট যখন Send বাটন ক্লিক করে, তখন sendMessage() ফাংশন কল হয়, যা socket.emit() ব্যবহার করে সার্ভারে একটি মেসেজ পাঠায়।
socket.emit('chatMessage', message);

2.2 Server থেকে Client এ মেসেজ পাঠানো

  1. সার্ভার যখন chatMessage ইভেন্ট পায়, তখন socket.emit() ব্যবহার করে ক্লায়েন্টকে serverMessage ইভেন্টের মাধ্যমে মেসেজ পাঠায়।
socket.emit('serverMessage', 'Hello from the server!');

2.3 Client এ মেসেজ গ্রহণ করা

  1. ক্লায়েন্ট socket.on() ব্যবহার করে সার্ভার থেকে মেসেজ গ্রহণ করে এবং তা #messages ডিভে দেখায়।
socket.on('serverMessage', function (data) {
  var messagesDiv = document.getElementById('messages');
  messagesDiv.innerHTML += '<p>' + data + '</p>';
});

3. Multiple Clients Support

যেহেতু Socket.IO হল একটি real-time communication লাইব্রেরি, এটি একাধিক ক্লায়েন্টকে একসাথে কানেক্ট করতে এবং মেসেজ পাঠাতে সক্ষম। যদি একাধিক ক্লায়েন্ট সার্ভারের সাথে সংযুক্ত থাকে, তাহলে socket.emit() অথবা io.emit() ব্যবহার করে সার্ভার সমস্ত ক্লায়েন্টকে মেসেজ পাঠাতে পারে।

Server-Side Example (Broadcasting):

socket.on('chatMessage', (msg) => {
  console.log('Message from client:', msg);
  io.emit('serverMessage', msg);  // সকল ক্লায়েন্টকে মেসেজ পাঠানো
});

এখানে io.emit() ব্যবহার করা হয়েছে, যার মাধ্যমে সমস্ত সংযুক্ত ক্লায়েন্টকে মেসেজ পাঠানো হচ্ছে।


4. Error Handling

Socket.IO তে message আদান-প্রদান করার সময় আপনি error handling যোগ করতে পারেন। যেমন, যদি সার্ভার থেকে মেসেজ পাঠানোর সময় কোনো সমস্যা হয়, আপনি try-catch ব্লক ব্যবহার করে error হ্যান্ডল করতে পারেন।

Example (Server-side Error Handling):

socket.on('chatMessage', (msg) => {
  try {
    console.log('Message from client:', msg);
    io.emit('serverMessage', msg);  // Broadcasting message
  } catch (error) {
    console.error('Error sending message:', error);
  }
});

5. Conclusion

Socket.IO ব্যবহার করে Server এবং Client এর মধ্যে message আদান-প্রদান খুবই সহজ। আপনি socket.emit() এবং socket.on() এর মাধ্যমে সার্ভার এবং ক্লায়েন্টের মধ্যে রিয়েল-টাইম যোগাযোগ প্রতিষ্ঠা করতে পারেন। যদি আপনি একাধিক ক্লায়েন্টের সাথে যোগাযোগ করতে চান, তবে io.emit() বা socket.broadcast.emit() ব্যবহার করতে পারেন।

এছাড়া, Socket.IO একাধিক সার্ভারে স্কেল করতে Redis adapter ব্যবহার করেও ক্লায়েন্টের সাথে মেসেজ শেয়ার করা সম্ভব।

Content added By
Promotion

Are you sure to start over?

Loading...