WebSockets একটি প্রযুক্তি যা ব্রাউজার এবং সার্ভারের মধ্যে একটানা, দ্বিমুখী (bidirectional) যোগাযোগ স্থাপন করতে সাহায্য করে। এটি Ajax এর তুলনায় আরও দ্রুত এবং কার্যকরী, কারণ এতে সার্ভার থেকে ক্লায়েন্টে রিয়েল-টাইম ডেটা পাঠানো যায়, এবং ক্লায়েন্ট থেকেও সার্ভারে ডেটা পাঠানো সম্ভব হয়, পেজ রিফ্রেশ ছাড়াই।
Ajax শুধুমাত্র request-response মডেল ব্যবহার করে, যেখানে একটি রিকোয়েস্ট পাঠানোর পর সার্ভার একটি রেসপন্স দেয়। তবে WebSockets দ্বারা persistent connection তৈরি হয়, যার মাধ্যমে সার্ভার এবং ক্লায়েন্ট একে অপরের সাথে যে কোন সময় যোগাযোগ করতে পারে।
এই টিউটোরিয়ালে, WebSockets এবং Ajax এর মাধ্যমে রিয়েল-টাইম যোগাযোগ কিভাবে করা যায়, তা আলোচনা করা হবে।
WebSockets হল একটি প্রোটোকল যা HTTP এর উপর ভিত্তি করে কাজ করে, কিন্তু এটি একবার কনেকশন স্থাপন হওয়ার পর ক্লায়েন্ট এবং সার্ভারের মধ্যে উন্মুক্ত থাকে, তাই যে কোন সময়ে ডেটা আদান-প্রদান করা যায়। এটি একটি টেকনিক্যাল ফিচার যা সার্ভার এবং ক্লায়েন্টের মধ্যে অ্যাসিনক্রোনাস, দ্বিমুখী যোগাযোগ তৈরি করে।
WebSockets এর কিছু গুরুত্বপূর্ণ বৈশিষ্ট্য:
ধরা যাক, আপনি একটি চ্যাট অ্যাপ্লিকেশন তৈরি করছেন যেখানে ব্যবহারকারীরা রিয়েল-টাইমে বার্তা পাঠাতে এবং গ্রহণ করতে পারেন।
JavaScript এর মাধ্যমে WebSocket কনেকশন স্থাপন করতে পারবেন। নিচে একটি সাধারণ উদাহরণ দেওয়া হলো যেখানে ক্লায়েন্ট এবং সার্ভারের মধ্যে ডেটা আদান-প্রদান করা হচ্ছে।
// WebSocket কনেকশন তৈরি করা
const socket = new WebSocket('ws://localhost:8080');
// WebSocket কনেকশন ওপেন হলে
socket.onopen = function(event) {
console.log('WebSocket connection established');
};
// সার্ভার থেকে মেসেজ আসলে
socket.onmessage = function(event) {
const message = event.data;
console.log('Received message: ' + message);
// মেসেজ পেজে ডিসপ্লে করা
document.getElementById('messages').innerHTML += `<p>${message}</p>`;
};
// WebSocket কনেকশন বন্ধ হলে
socket.onclose = function(event) {
console.log('WebSocket connection closed');
};
// কোনো ত্রুটি ঘটলে
socket.onerror = function(error) {
console.log('WebSocket Error: ' + error);
};
// মেসেজ পাঠানো
function sendMessage(message) {
if (socket.readyState === WebSocket.OPEN) {
socket.send(message);
}
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>WebSocket Chat</title>
</head>
<body>
<h2>WebSocket Chat</h2>
<div id="messages"></div>
<input type="text" id="messageInput" placeholder="Type your message...">
<button onclick="sendMessage(document.getElementById('messageInput').value)">Send</button>
<script src="script.js"></script>
</body>
</html>
WebSocket সার্ভার তৈরি করার জন্য আপনি Node.js এবং ws লাইব্রেরি ব্যবহার করতে পারেন।
Node.js WebSocket Server Example:
const WebSocket = require('ws');
// WebSocket server তৈরি করা
const wss = new WebSocket.Server({ port: 8080 });
wss.on('connection', (ws) => {
console.log('New client connected');
// ক্লায়েন্ট থেকে মেসেজ আসলে
ws.on('message', (message) => {
console.log('Received message: ' + message);
// ক্লায়েন্টে মেসেজ পাঠানো
ws.send('Hello, you said: ' + message);
});
// কনেকশন বন্ধ হলে
ws.on('close', () => {
console.log('Client disconnected');
});
});
WebSocket এবং Ajax একত্রে ব্যবহার করার মাধ্যমে আপনি রিয়েল-টাইম ডেটা ফেচিং এবং পেজের অংশের আপডেট করতে পারেন। যেমন, Ajax ব্যবহার করে প্রথমে ডেটা ফেচ করা হতে পারে, তারপর WebSocket এর মাধ্যমে রিয়েল-টাইম আপডেট দেয়া হতে পারে।
Ajax Example:
// Ajax দিয়ে প্রথমে ডেটা ফেচ করা
function fetchData() {
const xhr = new XMLHttpRequest();
xhr.open("GET", "https://jsonplaceholder.typicode.com/posts", true);
xhr.onload = function () {
if (xhr.status === 200) {
const posts = JSON.parse(xhr.responseText);
displayPosts(posts);
}
};
xhr.send();
}
// ডেটা পেজে ডিসপ্লে করা
function displayPosts(posts) {
const postsContainer = document.getElementById('postsContainer');
posts.forEach(post => {
postsContainer.innerHTML += `<p>${post.title}</p>`;
});
}
fetchData(); // ডেটা ফেচ করা
এখানে, প্রথমে Ajax দিয়ে ডেটা ফেচ করা হচ্ছে এবং তারপর WebSocket দিয়ে রিয়েল-টাইম বার্তা প্রেরণ করা হচ্ছে।
ফিচার | WebSocket | Ajax |
---|---|---|
সংযোগ | Persistent connection (একটানা) | নতুন রিকোয়েস্ট প্রতি সংযোগ |
প্রতিক্রিয়া | Full-duplex (দ্বিমুখী) | Request-Response (একক দিক) |
পারফরম্যান্স | দ্রুত, রিয়েল-টাইম | ডেটার লোডিংয়ের জন্য প্রতি রিকোয়েস্ট |
ব্যবহার | রিয়েল-টাইম অ্যাপ্লিকেশন (চ্যাট, নোটিফিকেশন) | পেজ রিফ্রেশ ছাড়া ডেটা লোড/আপডেট |
WebSockets এবং Ajax দুটি অত্যন্ত শক্তিশালী প্রযুক্তি, যা রিয়েল-টাইম ওয়েব অ্যাপ্লিকেশন তৈরি করার জন্য অত্যন্ত কার্যকরী। WebSocket একটি persistent connection তৈরি করে যা সার্ভার এবং ক্লায়েন্টের মধ্যে দ্রুত এবং দ্বিমুখী যোগাযোগ স্থাপন করতে সাহায্য করে, এবং Ajax ওয়েব পেজের অংশ আপডেট করার জন্য খুবই উপকারী। এই দুটি প্রযুক্তি একত্রে ব্যবহার করে আপনি আরও ইন্টারঅ্যাকটিভ এবং দ্রুত ওয়েব অ্যাপ্লিকেশন তৈরি করতে পারেন।
Read more