Web Sockets প্রোটোকলটি রিয়েল-টাইম ডেটা আদান-প্রদানের জন্য একটি অত্যন্ত দক্ষ এবং স্থিতিশীল মাধ্যম। তবে, এক্ষেত্রে বার্তা ফরম্যাটিং এবং ডেটা স্ট্যান্ডার্ডস ব্যবহারের জন্য কিছু নির্দিষ্ট নিয়ম রয়েছে, যা নিশ্চিত করে ডেটা সঠিকভাবে এবং সঠিক ফরম্যাটে প্রেরিত এবং গ্রহণ করা হয়। এই প্রক্রিয়ায় বার্তা পাঠানোর ধরণ এবং প্রেরিত ডেটার স্ট্রাকচার গুরুত্বপূর্ণ ভূমিকা পালন করে।
Web Sockets বার্তা ফরম্যাট
Web Sockets বার্তা আদান-প্রদানের সময় সাধারণত দুটি ফরম্যাট ব্যবহার করা হয়:
- টেক্সট ফরম্যাট (Text Format)
- বাইনারি ফরম্যাট (Binary Format)
১. টেক্সট ফরম্যাট (Text Format)
Web Sockets প্রোটোকলে, বার্তাগুলি সাধারণত UTF-8 এ এনকোড করা টেক্সট হিসেবে পাঠানো হয়। এটি খুবই সাধারণ এবং পাঠযোগ্য ফরম্যাট, যা সার্ভার এবং ক্লায়েন্ট উভয়ের জন্য সহজে হ্যান্ডেল করা যায়। Web Sockets এ পাঠানো বার্তা সাধারনত JSON (JavaScript Object Notation), XML, বা সাধারণ স্ট্রিং হিসেবে থাকতে পারে। JSON সবচেয়ে জনপ্রিয় ফরম্যাট, কারণ এটি স্ট্রাকচারড ডেটা সহজে প্রেরণ এবং গ্রহণ করতে সাহায্য করে।
উদাহরণ: JSON বার্তা
{
"type": "chat",
"user": "John Doe",
"message": "Hello, World!"
}
এই ধরনের বার্তা পাঠানো যেতে পারে যেখানে type, user, এবং message ফিল্ড থাকে, যা চ্যাট অ্যাপ্লিকেশনের জন্য উপযুক্ত।
টেক্সট বার্তা পাঠানো (JavaScript উদাহরণ)
const socket = new WebSocket('ws://example.com/socketserver');
socket.onopen = function() {
const message = {
type: "chat",
user: "Alice",
message: "Hello Server!"
};
socket.send(JSON.stringify(message)); // বার্তা JSON ফরম্যাটে পাঠানো হচ্ছে
};
২. বাইনারি ফরম্যাট (Binary Format)
Web Sockets প্রোটোকল বাইনারি ডেটা ট্রান্সফারের জন্যও সমর্থন প্রদান করে। যদি ডেটা খুব বড় হয় বা ইমেজ, ভিডিও বা অন্য কোনো মিডিয়া ফাইল পাঠানোর প্রয়োজন হয়, তখন বাইনারি ফরম্যাট ব্যবহার করা হয়। Web Sockets দুটি বাইনারি ফরম্যাট সমর্থন করে:
- Blob: বাইনারি ডেটা ধারণ করার জন্য, এটি প্রধানত ফাইল বা বড় ডেটা পাঠানোর জন্য ব্যবহৃত হয়।
- ArrayBuffer: এটি বাইনারি ডেটার জন্য একটি মূল ডেটা স্ট্রাকচার, যা সার্ভার এবং ক্লায়েন্টের মধ্যে ছোট বা বড় ডেটা পাঠানোর জন্য ব্যবহৃত হয়।
উদাহরণ: বাইনারি ডেটা পাঠানো (JavaScript উদাহরণ)
const socket = new WebSocket('ws://example.com/socketserver');
socket.onopen = function() {
// বাইনারি ডেটা (Blob বা ArrayBuffer) পাঠানো
const arrayBuffer = new ArrayBuffer(8);
const view = new DataView(arrayBuffer);
view.setUint8(0, 255); // ডেটা সেট করা হচ্ছে
socket.send(arrayBuffer); // ArrayBuffer পাঠানো হচ্ছে
};
Web Sockets বার্তা স্ট্যান্ডার্ড
Web Sockets প্রোটোকলের কিছু নির্দিষ্ট স্ট্যান্ডার্ড রয়েছে, যা বার্তা প্রেরণ এবং গ্রহণের ক্ষেত্রে অনুসরণ করা হয়। এই স্ট্যান্ডার্ডগুলি সঠিকভাবে ডেটা আদান-প্রদান নিশ্চিত করতে সহায়তা করে।
১. JSON স্ট্যান্ডার্ড
যেহেতু Web Sockets সাধারণত JSON ফরম্যাটে ডেটা আদান-প্রদান করে, তাই JSON এর কিছু স্ট্যান্ডার্ড রয়েছে যা নিশ্চিত করে ডেটা সঠিকভাবে পাঠানো হচ্ছে। উদাহরণস্বরূপ:
- JSON ডেটার সবকিছু স্ট্রিং হিসেবে পাঠানো উচিত।
- JSON অবজেক্টের কীগুলি ডাবল কোটস (
") ব্যবহার করে লেখা উচিত। - অবজেক্ট এবং অ্যারের মধ্যে সঠিক কনভার্শন নিশ্চিত করা উচিত।
উদাহরণ:
{
"status": "success",
"data": {
"user_id": 123,
"username": "john_doe"
}
}
২. WebSocket Frame Structure
Web Sockets প্রোটোকলে বার্তা পাঠানোর জন্য একটি নির্দিষ্ট ফ্রেম স্ট্রাকচার ব্যবহৃত হয়। প্রতিটি বার্তা একটি "frame" এ ভাঙা হয়, যার মধ্যে একটি হেডার এবং ডেটা থাকে। Web Socket frame গুলির কিছু গুরুত্বপূর্ণ অংশ:
- FIN bit: এটি জানায় যে, বার্তা শেষ হয়েছে কি না।
- RSV1, RSV2, RSV3: এগুলি রিজার্ভড ফিল্ড, যা ব্যবহারকারী কাস্টম ফিচারের জন্য রাখতে পারে।
- Opcode: এটি নির্ধারণ করে বার্তাটির ধরনের (যেমন, Text, Binary, Close, Ping, Pong ইত্যাদি)।
- Payload Length: ডেটার আকার নির্ধারণ করে।
- Mask: এটি ডেটা এনক্রিপ্ট করার জন্য ব্যবহৃত হয়।
- Payload Data: মূল ডেটা বা বার্তা।
৩. Ping/Pong স্ট্যান্ডার্ড
Web Sockets প্রোটোকল একটি Ping/Pong মেকানিজম সমর্থন করে, যা কানেকশনটির জীবিত থাকা নিশ্চিত করতে ব্যবহৃত হয়। এই মেকানিজমের মাধ্যমে, সার্ভার বা ক্লায়েন্ট একটি পিং (Ping) বার্তা পাঠায় এবং তার সাথে একটি পং (Pong) রেসপন্স আশা করে। এটি কানেকশন ম্যানেজমেন্ট এবং সিস্টেমের পারফরম্যান্স পর্যবেক্ষণের জন্য গুরুত্বপূর্ণ।
৪. Cross-Origin Resource Sharing (CORS)
Web Sockets ব্যবহার করার সময় CORS (Cross-Origin Resource Sharing) নীতি অনুসরণ করতে হয়, যাতে শুধুমাত্র অনুমোদিত ডোমেইন থেকে কানেকশন গ্রহণ করা যায়। CORS স্ট্যান্ডার্ড ক্লায়েন্ট এবং সার্ভারের মধ্যে নিরাপদ ডেটা আদান-প্রদান নিশ্চিত করে।
সারাংশ
Web Sockets প্রোটোকলে বার্তা ফরম্যাটিং এবং স্ট্যান্ডার্ডস খুবই গুরুত্বপূর্ণ, কারণ এটি ডেটা পাঠানোর প্রক্রিয়াকে নিরাপদ, দ্রুত এবং সঠিক রাখে। আপনি যে ফরম্যাটে ডেটা পাঠাবেন তা হতে পারে টেক্সট (যেমন JSON) বা বাইনারি (যেমন Blob বা ArrayBuffer)। Web Sockets প্রোটোকলটি বিভিন্ন স্ট্যান্ডার্ড যেমন JSON ফরম্যাট, Ping/Pong মেকানিজম এবং CORS সমর্থন করে, যা ডেটা আদান-প্রদানকে আরও কার্যকর এবং নিরাপদ করে তোলে।
Read more