Default Namespace এবং Custom Namespace তৈরি

Namespaces in Socket.IO (নেমস্পেসেস ইন সোকেট.আইও) - সকেট.আইও (Socket.IO) - Computer Programming

216

Socket.IONamespace একটি ধারণা যা সার্ভার ও ক্লায়েন্টের মধ্যে পৃথক যোগাযোগ চ্যানেল তৈরি করতে সাহায্য করে। এটি একটি সার্ভারের অংশ যা ক্লায়েন্টদের বিভিন্ন ধরণের যোগাযোগের জন্য আলাদা আলাদা কন্টেক্সট বা চ্যানেল তৈরি করতে সক্ষম করে। Default Namespace হল সেই Namespace যা Socket.IO ডিফল্টভাবে ব্যবহার করে এবং অন্য কোন Namespace ব্যবহার না করলে এটি স্বয়ংক্রিয়ভাবে ব্যবহার হয়। তবে, আপনি Custom Namespace তৈরি করে নিজস্ব আলাদা চ্যানেল বা রুট তৈরি করতে পারেন।


1. Default Namespace

Socket.IO ডিফল্টভাবে একটি / Namespace ব্যবহার করে। এটি সার্ভার এবং ক্লায়েন্টের মধ্যে সরাসরি যোগাযোগের জন্য ব্যবহৃত হয়, যদি আপনি কোন নির্দিষ্ট Namespace উল্লেখ না করেন।

Default Namespace উদাহরণ:

সার্ভার সাইড (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);

// ডিফল্ট Namespace '/'

// ক্লায়েন্ট কানেক্ট হলে
io.on('connection', (socket) => {
  console.log('A user connected');
  
  // ক্লায়েন্টে মেসেজ পাঠানো
  socket.emit('message', 'Hello from default namespace!');

  // ক্লায়েন্ট থেকে মেসেজ গ্রহণ করা
  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');
});

ক্লায়েন্ট সাইড (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 Client</title>
  <script src="/socket.io/socket.io.js"></script>
</head>
<body>
  <h1>Socket.IO Default Namespace</h1>
  <div id="messages"></div>
  <button onclick="sendMessage()">Send Message</button>

  <script>
    var socket = io(); // Default namespace

    // সার্ভার থেকে মেসেজ গ্রহণ করা
    socket.on('message', function (data) {
      document.getElementById('messages').innerHTML = data;
    });

    // সার্ভারে মেসেজ পাঠানো
    function sendMessage() {
      socket.emit('clientMessage', 'Hello from the client!');
    }
  </script>
</body>
</html>

এখানে, আমরা io.on('connection') দিয়ে ডিফল্ট Namespace / তে কানেকশন হ্যান্ডল করছি। ক্লায়েন্টের কাছে মেসেজ পাঠানো এবং গ্রহণ করা হচ্ছে।


2. Custom Namespace তৈরি করা

Socket.IO এ আপনি কাস্টম Namespace তৈরি করতে পারেন, যার মাধ্যমে আপনি সার্ভারে একাধিক যোগাযোগ চ্যানেল তৈরি করতে পারবেন। একটি কাস্টম Namespace ক্লায়েন্ট এবং সার্ভারের মধ্যে আলাদা যোগাযোগ ব্যবস্থা স্থাপন করে, যা আপনাকে বিভিন্ন কাজ আলাদাভাবে হ্যান্ডল করতে সাহায্য করে।

Custom Namespace উদাহরণ:

সার্ভার সাইড (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);

// Custom Namespace '/chat'
const chatNamespace = io.of('/chat');

// chatNamespace এ ক্লায়েন্ট কানেক্ট হলে
chatNamespace.on('connection', (socket) => {
  console.log('A user connected to the chat namespace');
  
  // ক্লায়েন্টে মেসেজ পাঠানো
  socket.emit('message', 'Welcome to the chat namespace!');

  // ক্লায়েন্ট থেকে মেসেজ গ্রহণ করা
  socket.on('clientMessage', (data) => {
    console.log('Received from client: ' + data);
  });

  // ডিসকানেক্ট হলে
  socket.on('disconnect', () => {
    console.log('A user disconnected from the chat namespace');
  });
});

// Default Namespace '/'

// ক্লায়েন্ট কানেক্ট হলে
io.on('connection', (socket) => {
  console.log('A user connected to the default namespace');
  
  socket.on('disconnect', () => {
    console.log('A user disconnected from the default namespace');
  });
});

// সার্ভার 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 Custom Namespace</title>
  <script src="/socket.io/socket.io.js"></script>
</head>
<body>
  <h1>Socket.IO Custom Namespace</h1>
  <div id="messages"></div>
  <button onclick="sendMessage()">Send Message to Chat</button>

  <script>
    // Custom namespace '/chat' এ কানেক্ট করা
    var socket = io('/chat');

    // সার্ভার থেকে মেসেজ গ্রহণ করা
    socket.on('message', function (data) {
      document.getElementById('messages').innerHTML = data;
    });

    // সার্ভারে মেসেজ পাঠানো
    function sendMessage() {
      socket.emit('clientMessage', 'Hello from the chat client!');
    }
  </script>
</body>
</html>

এখানে, আমরা io.of('/chat') দিয়ে একটি কাস্টম Namespace /chat তৈরি করেছি এবং সেখানে ক্লায়েন্ট কানেকশন হ্যান্ডলিং করছি। socket.emit()socket.on() এর মাধ্যমে ডেটা পাঠানো এবং গ্রহণ করা হচ্ছে।


সারসংক্ষেপ

  • Default Namespace: এটি একটি ডিফল্ট Namespace যা / নামে পরিচিত এবং এটি Socket.IO দ্বারা স্বয়ংক্রিয়ভাবে ব্যবহৃত হয় যদি আপনি অন্য কোনো Namespace ব্যবহার না করেন।
  • Custom Namespace: আপনি কাস্টম Namespace তৈরি করে আলাদা আলাদা চ্যানেল বা রুট তৈরি করতে পারেন, যেখানে বিভিন্ন ক্লায়েন্ট বা সার্ভার যোগাযোগ করতে পারে।

Socket.IO এর Namespaces ব্যবহার করে আপনি রিয়েল-টাইম অ্যাপ্লিকেশনগুলোকে আরও শক্তিশালী এবং স্কেলেবল করতে পারেন, বিশেষত যখন আপনার একাধিক চ্যানেল বা আলাদা পরিষেবা পরিচালনা করতে হয়।

Content added By
Promotion

Are you sure to start over?

Loading...