MeanJS স্ট্যাক (MongoDB, Express.js, AngularJS, Node.js) ব্যবহার করে real-time communication অ্যাপ্লিকেশন তৈরি করা সম্ভব। Real-time communication (RTC) এমন একটি প্রযুক্তি যা ব্যবহারকারীদের মধ্যে ডেটা সরাসরি এবং দ্রুত আদান-প্রদান করতে সক্ষম করে। এটি সাধারণত চ্যাট অ্যাপ্লিকেশন, রিয়েল-টাইম কোল্যাবোরেশন টুলস, গেমিং অ্যাপ্লিকেশন, লাইভ স্ট্রিমিং সিস্টেম, এবং অন্যান্য রিয়েল-টাইম পরিষেবাগুলিতে ব্যবহৃত হয়।
MeanJS স্ট্যাকের মাধ্যমে রিয়েল-টাইম কমিউনিকেশন অর্জন করতে Socket.IO এর মত প্রযুক্তি ব্যবহার করা হয়, যা Node.js এর জন্য তৈরি একটি লাইব্রেরি, এবং এটি WebSocket এর উপর ভিত্তি করে কাজ করে।
Real-time Communication এর মূল ধারণা
রিয়েল-টাইম কমিউনিকেশন (RTC) হল এমন একটি প্রক্রিয়া যার মাধ্যমে দুটি বা তার বেশি ডিভাইস একে অপরের সাথে তাৎক্ষণিকভাবে যোগাযোগ করতে পারে, এমনকি তারা যখন আলাদা অবস্থানে থাকে। এটি client-server architecture অথবা peer-to-peer architecture এর মাধ্যমে হতে পারে।
RTC এর মধ্যে দুটি প্রধান উপাদান রয়েছে:
- Client-Server Communication: এখানে, ক্লায়েন্ট একটি সার্ভারে রিকোয়েস্ট পাঠায় এবং সার্ভার তাৎক্ষণিকভাবে রেসপন্স পাঠায়।
- Peer-to-Peer Communication: এখানে, দুটি ক্লায়েন্ট সরাসরি একে অপরের সাথে ডেটা বা মেসেজ পাঠায়, সার্ভারের মাধ্যমে নয়।
Real-time Communication in MeanJS
MeanJS স্ট্যাকে real-time communication এর জন্য Socket.IO ব্যবহার করা হয়, যা WebSocket প্রোটোকল ব্যবহার করে ক্লায়েন্ট এবং সার্ভারের মধ্যে লাইভ, দু-পথ যোগাযোগ স্থাপন করে। Socket.IO তৎক্ষণাৎ মেসেজ আদান-প্রদান করার জন্য জনপ্রিয় একটি লাইব্রেরি, যা Node.js এর সাথে পুরোপুরি কাজ করে।
Socket.IO এর মাধ্যমে Real-time Communication
1. Socket.IO: Overview
Socket.IO হল একটি লাইব্রেরি যা ওয়েব ব্রাউজার এবং সার্ভারের মধ্যে real-time, দ্বৈত-মুখী যোগাযোগ স্থাপন করতে সহায়তা করে। এটি WebSocket প্রযুক্তির উপরে কাজ করে, তবে HTTP পদ্ধতিতেও কার্যকর থাকে, এবং অনেক উন্নত বৈশিষ্ট্য প্রদান করে।
- Bi-directional Communication: এটি ক্লায়েন্ট এবং সার্ভারের মধ্যে ডেটার আদান-প্রদানকে দ্রুত এবং সরাসরি পরিচালনা করতে সক্ষম।
- Event-driven: Socket.IO ইভেন্ট-ভিত্তিক, যা ক্লায়েন্ট এবং সার্ভারকে একে অপরের সঙ্গে যোগাযোগ করতে ইভেন্টের মাধ্যমে আদান-প্রদান করতে সক্ষম করে।
- Reconnection Support: সংযোগ বিচ্ছিন্ন হলে এটি স্বয়ংক্রিয়ভাবে পুনরায় সংযোগ স্থাপন করে।
2. Socket.IO ইনস্টলেশন এবং সেটআপ
Socket.IO সেটআপ করার জন্য আপনাকে প্রথমে Socket.IO ইনস্টল করতে হবে এবং সেটি আপনার Express.js অ্যাপ্লিকেশনের সাথে ইন্টিগ্রেট করতে হবে।
- Socket.IO ইনস্টল করা
npm install socket.io --save
- Express.js এবং Socket.IO ইন্টিগ্রেট করা
// server.js
const express = require('express');
const http = require('http');
const socketIo = require('socket.io');
const app = express();
const server = http.createServer(app);
const io = socketIo(server); // Socket.IO সেটআপ
// Socket.io Connection
io.on('connection', (socket) => {
console.log('A user connected');
// মেসেজ পাঠানো
socket.emit('message', 'Welcome to the real-time communication app!');
// ক্লায়েন্ট থেকে মেসেজ গ্রহণ করা
socket.on('chat message', (msg) => {
console.log('Message received: ' + msg);
io.emit('chat message', msg); // সকল ক্লায়েন্টে মেসেজ পাঠানো
});
// ক্লায়েন্ট ডিসকানেক্ট হলে
socket.on('disconnect', () => {
console.log('User disconnected');
});
});
// সার্ভার চালু করা
const port = process.env.PORT || 3000;
server.listen(port, () => {
console.log(`Server running on port ${port}`);
});
এখানে:
- io.on('connection', callback): এটি ক্লায়েন্টের সংযোগ গ্রহণ করে এবং ইভেন্ট হ্যান্ডলার রেজিস্টার করে।
- socket.emit('message', data): এটি ক্লায়েন্টে মেসেজ পাঠানোর জন্য ব্যবহৃত হয়।
- socket.on('chat message', callback): ক্লায়েন্ট থেকে মেসেজ গ্রহণ করার জন্য ব্যবহৃত হয়।
3. AngularJS এর মাধ্যমে Socket.IO এর ব্যবহার
AngularJS ক্লায়েন্ট সাইডে Socket.IO ব্যবহার করতে, আপনি socket.io-client লাইব্রেরি ব্যবহার করতে পারেন। এর মাধ্যমে AngularJS এ রিয়েল-টাইম মেসেজিং সেটআপ করা হয়।
- Socket.IO Client ইনস্টল করা
npm install socket.io-client --save
- AngularJS কন্ট্রোলারে Socket.IO সেটআপ করা
// public/js/controllers/chat.controller.js
angular.module('meanApp')
.controller('ChatController', function($scope) {
// Socket.IO Client ইন্টিগ্রেট করা
const socket = io(); // সার্ভারের সাথে সংযোগ স্থাপন
// মেসেজ রিসিভ করা
socket.on('message', function(data) {
console.log('Received message:', data);
$scope.messages.push(data);
});
// মেসেজ পাঠানো
$scope.sendMessage = function() {
socket.emit('chat message', $scope.newMessage); // সার্ভারে মেসেজ পাঠানো
$scope.newMessage = ''; // ইনপুট ফিল্ড ক্লিয়ার করা
};
// মেসেজের জন্য ডেটা স্টোর করা
$scope.messages = [];
});
এখানে:
- socket.on('message', callback): এটি সার্ভার থেকে পাঠানো মেসেজ গ্রহণ করে।
- socket.emit('chat message', data): এটি ক্লায়েন্ট থেকে সার্ভারে মেসেজ পাঠানোর জন্য ব্যবহৃত হয়।
4. ক্লায়েন্ট সাইড টেমপ্লেট (HTML)
<!-- public/index.html -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Real-time Chat</title>
</head>
<body ng-app="meanApp" ng-controller="ChatController">
<div>
<h2>Real-time Chat</h2>
<ul>
<li ng-repeat="message in messages">{{message}}</li>
</ul>
<input type="text" ng-model="newMessage" placeholder="Enter message">
<button ng-click="sendMessage()">Send</button>
</div>
</body>
</html>
এখানে, ব্যবহারকারী ইনপুট ফিল্ডে মেসেজ লিখে Send বাটন টিপলে, মেসেজটি সার্ভারে পাঠানো হবে এবং সার্ভার থেকে তা সব ক্লায়েন্টে রিয়েল-টাইমে ছড়িয়ে পড়বে।
সারাংশ
MeanJS স্ট্যাকের মধ্যে real-time communication নিশ্চিত করতে Socket.IO ব্যবহার করা হয়। Socket.IO ক্লায়েন্ট এবং সার্ভারের মধ্যে bi-directional communication স্থাপন করে, যা রিয়েল-টাইম মেসেজিং, নোটিফিকেশন এবং অন্যান্য রিয়েল-টাইম কার্যকলাপ পরিচালনা করতে সাহায্য করে। WebSocket এর উপরে ভিত্তি করে কাজ করা Socket.IO আরও অনেক সুবিধা প্রদান করে যেমন: auto-reconnection, event-driven architecture, এবং broadcasting। MeanJS এর মাধ্যমে real-time communication অ্যাপ্লিকেশন তৈরি করা খুবই সহজ এবং কার্যকরী।
Read more