Web Sockets এর মাধ্যমে ডেটা আদান-প্রদান করার সময়, সাধারণত JSON (JavaScript Object Notation) ফরম্যাটে ডেটা পাঠানো এবং গ্রহণ করা হয়। JSON হল একটি লাইটওয়েট ডেটা ইন্টারচেঞ্জ ফরম্যাট, যা মানুষের পঠনযোগ্য এবং মেশিনের জন্য সহজে পার্স করা যায়। Web Sockets এ JSON ডেটা সেরিয়ালাইজ (serialize) এবং ডেসেরিয়ালাইজ (deserialize) করার মাধ্যমে, অবজেক্ট বা ডেটাকে পাঠানো ও গ্রহণ করা সম্ভব হয়।
সেরিয়ালাইজেশন (Serialization)
সেরিয়ালাইজেশন হল প্রক্রিয়া, যেখানে একটি অবজেক্ট বা ডেটা স্ট্রাকচারকে স্টোর বা ট্রান্সফার করার জন্য একটি নির্দিষ্ট ফরম্যাটে (যেমন, JSON) রূপান্তর করা হয়। JavaScript এ, JSON.stringify() মেথড ব্যবহার করে অবজেক্টকে JSON স্ট্রিংয়ে রূপান্তর করা হয়।
উদাহরণ:
// একটি জাভাস্ক্রিপ্ট অবজেক্ট
const user = {
name: "John Doe",
age: 30,
isMember: true
};
// অবজেক্টকে JSON স্ট্রিং এ সেরিয়ালাইজ করা
const jsonString = JSON.stringify(user);
console.log(jsonString);
// আউটপুট: {"name":"John Doe","age":30,"isMember":true}
এখানে, user অবজেক্টটি JSON.stringify() মেথডের মাধ্যমে JSON স্ট্রিং jsonString এ রূপান্তরিত হয়েছে। এই JSON স্ট্রিংটি Web Socket সার্ভারে পাঠানো যেতে পারে।
ডেসেরিয়ালাইজেশন (Deserialization)
ডেসেরিয়ালাইজেশন হল প্রক্রিয়া, যেখানে JSON স্ট্রিংকে আবার একটি অবজেক্টে রূপান্তর করা হয়, যাতে ডেটার আসল কাঠামো পুনরুদ্ধার করা যায়। JavaScript এ, JSON.parse() মেথড ব্যবহার করে JSON স্ট্রিংকে অবজেক্টে রূপান্তর করা হয়।
উদাহরণ:
// JSON স্ট্রিং
const jsonString = '{"name":"John Doe","age":30,"isMember":true}';
// JSON স্ট্রিংকে জাভাস্ক্রিপ্ট অবজেক্টে ডেসেরিয়ালাইজ করা
const user = JSON.parse(jsonString);
console.log(user);
// আউটপুট: { name: 'John Doe', age: 30, isMember: true }
এখানে, jsonString স্ট্রিংটি JSON.parse() মেথডের মাধ্যমে একটি জাভাস্ক্রিপ্ট অবজেক্টে রূপান্তরিত হয়েছে।
Web Sockets এ JSON সেরিয়ালাইজ এবং ডেসেরিয়ালাইজ করা
Web Sockets এ ডেটা আদান-প্রদান করার সময়, ক্লায়েন্ট এবং সার্ভার JSON ফরম্যাটে ডেটা পাঠাতে এবং গ্রহণ করতে পারে। নিচে একটি সাধারণ উদাহরণ দেয়া হলো, যেখানে ক্লায়েন্ট এবং সার্ভার JSON ডেটা সেরিয়ালাইজ এবং ডেসেরিয়ালাইজ করবে।
১. Web Socket সার্ভার (Node.js)
// server.js
const WebSocket = require('ws');
const wss = new WebSocket.Server({ port: 8080 });
wss.on('connection', (ws) => {
console.log('A new client connected!');
// ক্লায়েন্টকে JSON ডেটা পাঠানো
const message = { type: "greeting", content: "Welcome to the WebSocket server!" };
ws.send(JSON.stringify(message)); // JSON সেরিয়ালাইজ করা হচ্ছে
// ক্লায়েন্ট থেকে মেসেজ পাওয়ার পর
ws.on('message', (message) => {
// ক্লায়েন্ট থেকে প্রাপ্ত JSON ডেটা ডেসেরিয়ালাইজ করা হচ্ছে
const receivedMessage = JSON.parse(message);
console.log('Received message:', receivedMessage);
// সার্ভার থেকে ক্লায়েন্টকে রিপ্লাই পাঠানো
const reply = { type: "response", content: "Message received successfully." };
ws.send(JSON.stringify(reply)); // JSON সেরিয়ালাইজ করা হচ্ছে
});
// ক্লায়েন্ট ডিসকানেক্ট হলে
ws.on('close', () => {
console.log('A client disconnected.');
});
});
console.log('WebSocket server is running on ws://localhost:8080');
এখানে সার্ভার একটি JSON অবজেক্ট সেরিয়ালাইজ করে ক্লায়েন্টে পাঠাচ্ছে, এবং ক্লায়েন্ট থেকে পাওয়া JSON স্ট্রিং ডেসেরিয়ালাইজ করে সে অনুযায়ী প্রতিক্রিয়া পাঠাচ্ছে।
২. Web Socket ক্লায়েন্ট (HTML + JavaScript)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>WebSocket Example</title>
</head>
<body>
<h1>WebSocket Client</h1>
<div id="messages"></div>
<input type="text" id="messageInput" placeholder="Type a message">
<button id="sendButton">Send Message</button>
<script>
// WebSocket কানেকশন তৈরি করা
const socket = new WebSocket('ws://localhost:8080');
// সার্ভারের সাথে কানেকশন স্থাপন হলে
socket.onopen = function() {
console.log('Connected to the WebSocket server.');
};
// সার্ভার থেকে মেসেজ প্রাপ্ত হলে
socket.onmessage = function(event) {
const messagesDiv = document.getElementById('messages');
const receivedMessage = JSON.parse(event.data); // JSON ডেসেরিয়ালাইজ করা
messagesDiv.innerHTML += `<p>Server: ${receivedMessage.content}</p>`;
};
// কানেকশন বন্ধ হলে
socket.onclose = function() {
console.log('Disconnected from the WebSocket server.');
};
// Send button ক্লিক করলে মেসেজ পাঠানো
document.getElementById('sendButton').onclick = function() {
const message = document.getElementById('messageInput').value;
const jsonMessage = { type: "chat", content: message }; // JSON অবজেক্ট
socket.send(JSON.stringify(jsonMessage)); // JSON সেরিয়ালাইজ করা
document.getElementById('messageInput').value = '';
};
</script>
</body>
</html>
এখানে, ক্লায়েন্ট একটি JSON অবজেক্ট তৈরি করে, যা সেরিয়ালাইজ করে সার্ভারে পাঠাচ্ছে। সার্ভার থেকে প্রাপ্ত JSON ডেটা ডেসেরিয়ালাইজ করে পৃষ্ঠায় দেখানো হচ্ছে।
সারাংশ
Web Sockets এ JSON ডেটা সেরিয়ালাইজ এবং ডেসেরিয়ালাইজ করা অত্যন্ত গুরুত্বপূর্ণ, কারণ এটি ডেটা আদান-প্রদানকে সহজ এবং কার্যকরী করে তোলে। JSON.stringify() মেথড দ্বারা অবজেক্ট সেরিয়ালাইজ করা হয় এবং JSON.parse() মেথড দ্বারা JSON স্ট্রিংকে জাভাস্ক্রিপ্ট অবজেক্টে রূপান্তর করা হয়। এই প্রক্রিয়াটি Web Sockets প্রোটোকলে ডেটা ট্রান্সফার করার সময় ব্যবহৃত হয়, যা রিয়েল-টাইম অ্যাপ্লিকেশন যেমন চ্যাট, গেমিং এবং লাইভ ডেটা ট্রান্সফার সিস্টেমগুলির জন্য খুবই কার্যকরী।
Read more