MeanJS স্ট্যাকটি MongoDB, Express.js, AngularJS, এবং Node.js এর সমন্বয়ে তৈরি এবং এটি খুবই শক্তিশালী এবং স্কেলেবল অ্যাপ্লিকেশন তৈরি করতে সক্ষম। এর মধ্যে real-time chat এবং notification ব্যবস্থা খুবই গুরুত্বপূর্ণ, কারণ এটি ব্যবহারকারীদের সাথে দ্রুত এবং সরাসরি যোগাযোগ করার সুবিধা প্রদান করে। এই সিস্টেমটি সাধারণত Socket.io ব্যবহার করে তৈরি করা হয়, যা Node.js-এর সাথে খুব ভালোভাবে কাজ করে।
এখানে, MeanJS স্ট্যাকের মধ্যে Real-time Chat এবং Notification ব্যবস্থা কিভাবে তৈরি করা যায়, তা বিস্তারিতভাবে আলোচনা করা হয়েছে।
Real-time Chat: Socket.io ব্যবহার করা
Socket.io হল একটি লাইব্রেরি যা Node.js এর সাথে কাজ করে এবং ক্লায়েন্ট এবং সার্ভারের মধ্যে real-time communication সক্ষম করে। এটি WebSocket প্রযুক্তির উপর ভিত্তি করে তৈরি, যা একে খুব দ্রুত এবং কার্যকরী করে তোলে।
Socket.io সেটআপ করা
প্রথমে, আপনাকে Socket.io ইনস্টল করতে হবে:
npm install socket.io --save
Server-side (Express.js + Socket.io)
এখন, 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);
// ক্লায়েন্টের সাথে সংযোগ স্থাপন করা
io.on('connection', (socket) => {
console.log('A user connected');
// ক্লায়েন্ট থেকে বার্তা গ্রহণ
socket.on('chat message', (msg) => {
console.log('Message received: ' + msg);
// ক্লায়েন্টকে বার্তা পাঠানো
io.emit('chat message', msg);
});
// সংযোগ বিচ্ছিন্ন হলে
socket.on('disconnect', () => {
console.log('A user disconnected');
});
});
// সার্ভার শুরু করা
server.listen(3000, () => {
console.log('Server running on port 3000');
});
এখানে:
- Socket.io এর মাধ্যমে সার্ভারে connection ইভেন্টটি ট্র্যাক করা হচ্ছে, যা ক্লায়েন্টের সাথে সংযোগ স্থাপন করে।
- chat message নামক ইভেন্টে বার্তা শোনা হচ্ছে এবং সেই বার্তাটি আবার io.emit এর মাধ্যমে সকল ক্লায়েন্টে পাঠানো হচ্ছে।
Client-side (AngularJS)
এখন, AngularJS ফ্রন্টএন্ডে Socket.io-client ব্যবহার করে সার্ভারের সাথে যোগাযোগ করা হবে। প্রথমে, socket.io-client ইনস্টল করতে হবে।
npm install socket.io-client --save
এখন, AngularJS এর মাধ্যমে চ্যাট ইন্টারফেস তৈরি করা হবে।
// app.component.ts
import { Component } from '@angular/core';
import * as io from 'socket.io-client';
@Component({
selector: 'app-root',
template: `
<div>
<h2>Real-time Chat</h2>
<input type="text" [(ngModel)]="message" placeholder="Enter message" />
<button (click)="sendMessage()">Send</button>
<ul>
<li *ngFor="let msg of messages">{{ msg }}</li>
</ul>
</div>
`,
styleUrls: ['./app.component.css']
})
export class AppComponent {
message: string = '';
messages: string[] = [];
private socket: any;
constructor() {
this.socket = io('http://localhost:3000');
// চ্যাট মেসেজ শোনার জন্য
this.socket.on('chat message', (msg: string) => {
this.messages.push(msg);
});
}
// চ্যাট মেসেজ পাঠানো
sendMessage() {
if (this.message) {
this.socket.emit('chat message', this.message);
this.message = '';
}
}
}
এখানে:
- socket.io-client ব্যবহার করে AngularJS ক্লায়েন্টে সার্ভারের সাথে সংযোগ স্থাপন করা হয়েছে।
- sendMessage() ফাংশনটি ব্যবহার করে ক্লায়েন্ট থেকে বার্তা পাঠানো হচ্ছে এবং chat message ইভেন্টের মাধ্যমে বার্তা শোনা হচ্ছে।
- messages অ্যারে দিয়ে বার্তাগুলি UI তে দেখানো হচ্ছে।
Notification System (Real-time Notifications)
Real-time Notification ব্যবস্থা তৈরি করার জন্যও আপনি Socket.io ব্যবহার করতে পারেন। যখনই কোন ব্যবহারকারী একটি অ্যাকশন নেয় (যেমন চ্যাট করা, লাইক করা, বা অন্য কিছু), তখন সেই ব্যবহারকারী বা অন্য ব্যবহারকারীদের একটি নোটিফিকেশন পাঠানো হবে।
Server-side Notification (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);
let users = {}; // ক্লায়েন্টদের সনাক্ত করতে ব্যবহারকারী তালিকা
// ক্লায়েন্টের সাথে সংযোগ স্থাপন করা
io.on('connection', (socket) => {
console.log('A user connected');
// ব্যবহারকারীর নাম সাইন ইন করা
socket.on('set username', (username) => {
users[username] = socket.id;
});
// নোটিফিকেশন পাঠানো
socket.on('send notification', (data) => {
const { receiver, message } = data;
if (users[receiver]) {
io.to(users[receiver]).emit('notification', message); // নির্দিষ্ট ব্যবহারকারীকে নোটিফিকেশন পাঠানো
}
});
// সংযোগ বিচ্ছিন্ন হলে
socket.on('disconnect', () => {
console.log('A user disconnected');
});
});
// সার্ভার শুরু করা
server.listen(3000, () => {
console.log('Server running on port 3000');
});
এখানে:
- set username ইভেন্টের মাধ্যমে ব্যবহারকারীদের নাম সাইন ইন করা হচ্ছে এবং তাদের socket.id সংগ্রহ করা হচ্ছে।
- send notification ইভেন্টে নির্দিষ্ট ব্যবহারকারীর কাছে নোটিফিকেশন পাঠানো হচ্ছে।
Client-side Notification (AngularJS)
এখন, AngularJS ক্লায়েন্টে নোটিফিকেশন সিস্টেম সেটআপ করা হবে।
// app.component.ts
import { Component } from '@angular/core';
import * as io from 'socket.io-client';
@Component({
selector: 'app-root',
template: `
<div>
<h2>Real-time Notifications</h2>
<div *ngIf="notification">{{ notification }}</div>
<button (click)="sendNotification()">Send Notification</button>
</div>
`,
styleUrls: ['./app.component.css']
})
export class AppComponent {
notification: string = '';
private socket: any;
constructor() {
this.socket = io('http://localhost:3000');
// নোটিফিকেশন শোনার জন্য
this.socket.on('notification', (msg: string) => {
this.notification = msg;
});
}
// নোটিফিকেশন পাঠানোর জন্য
sendNotification() {
const data = { receiver: 'user2', message: 'You have a new message!' };
this.socket.emit('send notification', data);
}
}
এখানে:
- sendNotification() ফাংশনটি send notification ইভেন্টে ডেটা পাঠায়।
- notification প্রপার্টি ব্যবহারকারীর কাছে নোটিফিকেশন দেখানোর জন্য ব্যবহৃত হচ্ছে।
সারাংশ
MeanJS স্ট্যাকের মধ্যে Socket.io ব্যবহার করে Real-time Chat এবং Notification ব্যবস্থা তৈরি করা সম্ভব। সার্ভার এবং ক্লায়েন্টের মধ্যে real-time communication এর জন্য Socket.io একটি শক্তিশালী লাইব্রেরি। Express.js সার্ভারে Socket.io সেটআপ করা হয় এবং AngularJS ক্লায়েন্টে সেই নোটিফিকেশন বা চ্যাট মেসেজ রিসিভ ও ডিসপ্লে করা হয়। এটি একটি খুব কার্যকরী পদ্ধতি যা আপনার অ্যাপ্লিকেশনকে আরও ইন্টারঅ্যাকটিভ এবং ব্যবহারকারী বান্ধব করে তোলে।
Read more