koa-websocket ব্যবহার করে WebSocket এন্ডপয়েন্ট তৈরি করা

KoaJS এবং WebSocket Integration - কোআজেএস (KoaJS) - Web Development

236

KoaJS একটি লঘু এবং কাস্টমাইজযোগ্য ওয়েব ফ্রেমওয়ার্ক যা Node.js এর উপর ভিত্তি করে তৈরি হয়েছে। ওয়েবসকেট (WebSocket) হল একটি প্রোটোকল যা ব্রাউজার এবং সার্ভারের মধ্যে রিয়েল-টাইম ডেটা এক্সচেঞ্জের জন্য ব্যবহৃত হয়। সাধারণ HTTP রিকোয়েস্ট-রেসপন্স মডেলটি যেখানে একবার রিকোয়েস্ট পাঠানোর পর রেসপন্স আসে, সেখানে WebSocket একটি দীর্ঘস্থায়ী কানেকশন তৈরি করে যেটি সার্ভার এবং ক্লায়েন্টের মধ্যে একে অপরের সাথে রিয়েল-টাইমে ডেটা আদান-প্রদান করতে সক্ষম।

KoaJS-এ koa-websocket মিডলওয়্যার ব্যবহার করে সহজেই WebSocket এন্ডপয়েন্ট তৈরি করা যায়। এই টিউটোরিয়ালে, আমরা দেখব কিভাবে KoaJS-এ WebSocket ব্যবহার করা যায়।


১. koa-websocket ইনস্টল করা

প্রথমে, আপনার KoaJS অ্যাপে koa-websocket ইনস্টল করতে হবে:

npm install koa-websocket

এটি WebSocket এর জন্য KoaJS-এ মিডলওয়্যার প্রদান করে যা HTTP সার্ভারের সাথে WebSocket কানেকশন হ্যান্ডলিং করতে সক্ষম।


২. KoaJS-এ WebSocket কনফিগারেশন

এখন, আমরা koa-websocket ব্যবহার করে একটি WebSocket সার্ভার তৈরি করব যা ক্লায়েন্টের সাথে রিয়েল-টাইমে যোগাযোগ করবে।

২.১. WebSocket কনফিগারেশন এবং রাউট তৈরি করা

const Koa = require('koa');
const Router = require('koa-router');
const koaWebSocket = require('koa-websocket');
const app = koaWebSocket(new Koa());
const router = new Router();

// WebSocket কানেকশন তৈরি করা
app.ws.use((ctx) => {
  console.log('WebSocket connection established');

  // একটি মেসেজ রিসিভ করার জন্য হ্যান্ডলার
  ctx.websocket.on('message', (message) => {
    console.log('Received message: ' + message);

    // ক্লায়েন্টকে মেসেজ পাঠানো
    ctx.websocket.send(`Hello from server: ${message}`);
  });

  // কানেকশন বন্ধ হলে
  ctx.websocket.on('close', () => {
    console.log('WebSocket connection closed');
  });
});

// HTTP রাউট হ্যান্ডলিং
router.get('/', async (ctx) => {
  ctx.body = 'Hello, World! You can connect via WebSocket now.';
});

app
  .use(router.routes())
  .use(router.allowedMethods());

// অ্যাপ চালু করা
app.listen(3000, () => {
  console.log('Server is running on http://localhost:3000');
});

ব্যাখ্যা:

  1. koa-websocket: এটি KoaJS অ্যাপে WebSocket সাপোর্ট যোগ করে।
  2. WebSocket কানেকশন: app.ws.use() এর মাধ্যমে WebSocket কানেকশন কনফিগার করা হয়েছে।
  3. Message Handling: ctx.websocket.on('message', callback) এর মাধ্যমে সার্ভার ক্লায়েন্ট থেকে আসা মেসেজ প্রক্রিয়া করে এবং ctx.websocket.send() ব্যবহার করে ক্লায়েন্টকে রেসপন্স পাঠায়।
  4. Connection Close: ctx.websocket.on('close', callback) এর মাধ্যমে WebSocket কানেকশন বন্ধ হলে সঠিকভাবে লগিং করা হয়েছে।

২.২. WebSocket ক্লায়েন্ট কানেকশন তৈরি করা

এখন, আপনি ব্রাউজার থেকে ওয়েবসকেট কানেকশন করতে পারেন। নিচে একটি সাধারণ WebSocket ক্লায়েন্ট কোড দেওয়া হল:

// WebSocket কানেকশন তৈরি করা
const socket = new WebSocket('ws://localhost:3000');

// সার্ভার থেকে মেসেজ রিসিভ করা
socket.onmessage = (event) => {
  console.log('Received from server: ' + event.data);
};

// সার্ভারে মেসেজ পাঠানো
socket.onopen = () => {
  socket.send('Hello from client!');
};

// কানেকশন বন্ধ হলে
socket.onclose = () => {
  console.log('WebSocket connection closed');
};

এখানে, ব্রাউজারে WebSocket অবজেক্ট ব্যবহার করে ws://localhost:3000 এ কানেকশন তৈরি করা হয়েছে এবং ক্লায়েন্ট থেকে সার্ভারে মেসেজ পাঠানো হচ্ছে।


৩. Multiple WebSocket Connections হ্যান্ডল করা

আপনি যদি একাধিক ক্লায়েন্টের সাথে WebSocket কানেকশন হ্যান্ডল করতে চান, তবে এটি খুবই সহজ KoaJS-এ। আপনি প্রতিটি ক্লায়েন্টের জন্য একটি আলাদা কানেকশন ম্যানেজ করতে পারেন।

let clients = [];

app.ws.use((ctx) => {
  console.log('New WebSocket connection established');
  clients.push(ctx.websocket);  // ক্লায়েন্ট সংরক্ষণ করা

  ctx.websocket.on('message', (message) => {
    console.log('Received message: ' + message);

    // সমস্ত কানেকশনকে মেসেজ পাঠানো
    clients.forEach(client => {
      client.send(`Broadcast message: ${message}`);
    });
  });

  ctx.websocket.on('close', () => {
    console.log('WebSocket connection closed');
    clients = clients.filter(client => client !== ctx.websocket);  // ক্লায়েন্ট বন্ধ হলে মুছে ফেলা
  });
});

এখানে, clients অ্যারে-তে সমস্ত WebSocket কানেকশন রাখা হচ্ছে, এবং যেকোনো মেসেজ পেলে সমস্ত কানেকশনকে সেই মেসেজ ব্রডকাস্ট করা হচ্ছে।


৪. WebSocket Error Handling

WebSocket ব্যবহার করার সময় কিছু সমস্যা বা ত্রুটি হতে পারে। এ কারণে, আপনি error handling করতে পারেন।

app.ws.use((ctx) => {
  try {
    console.log('WebSocket connection established');
    ctx.websocket.on('message', (message) => {
      if (message === 'error') {
        throw new Error('Test error');  // উদাহরণস্বরূপ ত্রুটি
      }
      ctx.websocket.send(`Received: ${message}`);
    });
  } catch (err) {
    console.error('WebSocket error:', err);
    ctx.websocket.send('An error occurred');
  }
});

এখানে, WebSocket এর message ইভেন্ট হ্যান্ডলারটি ত্রুটি সনাক্ত করার জন্য try-catch ব্যবহার করা হয়েছে। ত্রুটি ঘটলে সার্ভার ক্লায়েন্টকে ত্রুটির বার্তা পাঠাবে।


সারাংশ

KoaJS-এ WebSocket এর মাধ্যমে রিয়েল-টাইম ডেটা এক্সচেঞ্জ করা সম্ভব এবং এটি koa-websocket মিডলওয়্যার ব্যবহার করে সহজেই কনফিগার করা যায়। WebSocket কানেকশন স্টার্ট করা, মেসেজ পাঠানো, এবং একাধিক ক্লায়েন্টের সাথে যোগাযোগ করার জন্য কোড সহজ এবং কার্যকরী হয়ে ওঠে। KoaJS-এ WebSocket সার্ভার তৈরি করা খুবই সুবিধাজনক, এবং আপনি সহজেই ক্লায়েন্টদের সাথে রিয়েল-টাইম যোগাযোগ সক্ষম করতে পারেন।

Content added By
Promotion

Are you sure to start over?

Loading...