Web Sockets API হল একটি JavaScript API যা ক্লায়েন্ট-সার্ভার অ্যাপ্লিকেশনগুলির মধ্যে রিয়েল-টাইম, দুই দিকের (full-duplex) যোগাযোগ প্রতিষ্ঠা করতে ব্যবহৃত হয়। এটি ডেটা আদান-প্রদানের জন্য একটি স্থায়ী, অবিচ্ছিন্ন কানেকশন তৈরি করে, যা Web Sockets প্রোটোকলের মাধ্যমে কাজ করে। Web Sockets API ব্যবহার করে আপনি ব্রাউজার এবং সার্ভারের মধ্যে দ্রুত এবং কার্যকরী ডেটা আদান-প্রদান করতে পারেন।
Web Sockets API এর মৌলিক কাঠামো
Web Sockets API মূলত WebSocket অবজেক্ট ব্যবহার করে, যা ব্রাউজার এবং সার্ভারের মধ্যে একটি সক্রিয় কানেকশন তৈরি করে। এই API ব্যবহার করে আপনি একটি WebSocket সংযোগ তৈরি করতে, ডেটা পাঠাতে, গ্রহণ করতে এবং কানেকশন বন্ধ করতে পারবেন।
১. WebSocket অবজেক্ট তৈরি করা
WebSocket অবজেক্ট তৈরি করতে new WebSocket(url) ব্যবহার করা হয়, যেখানে url হলো WebSocket সার্ভারের ঠিকানা। এটি ক্লায়েন্টের ব্রাউজারে একটি কানেকশন শুরু করে।
কোড উদাহরণ:
// WebSocket অবজেক্ট তৈরি করা
let socket = new WebSocket("ws://example.com/socket");
এখানে, "ws://example.com/socket" হল WebSocket সার্ভারের URL। যদি নিরাপদ কানেকশন (SSL) ব্যবহার করতে চান, তবে URL শুরু হবে wss:// দিয়ে।
let socket = new WebSocket("wss://example.com/socket");
২. WebSocket ইভেন্টস
WebSocket অবজেক্টে কিছু ইভেন্ট থাকে, যা বিভিন্ন অবস্থায় ট্রিগার হয়। এই ইভেন্টগুলি ব্যবহারের মাধ্যমে আপনি কানেকশন পরিচালনা করতে পারবেন।
- onopen: যখন WebSocket কানেকশন সফলভাবে খোলা হয়।
- onmessage: যখন WebSocket কানেকশনের মাধ্যমে কোনো ডেটা আসে।
- onerror: যদি WebSocket কানেকশনের সময় কোনো ত্রুটি ঘটে।
- onclose: যখন WebSocket কানেকশন বন্ধ হয়ে যায়।
কোড উদাহরণ:
// কানেকশন খোলার পরের কার্যক্রম
socket.onopen = function(event) {
console.log("WebSocket connection established!");
};
// সার্ভার থেকে ডেটা পাওয়ার পরের কার্যক্রম
socket.onmessage = function(event) {
console.log("Data received from server: " + event.data);
};
// যদি কোনো ত্রুটি ঘটে
socket.onerror = function(error) {
console.log("WebSocket error: " + error);
};
// কানেকশন বন্ধ হলে
socket.onclose = function(event) {
console.log("WebSocket connection closed.");
};
৩. ডেটা পাঠানো
WebSocket কানেকশনে ডেটা পাঠানোর জন্য send() মেথড ব্যবহার করা হয়। আপনি টেক্সট (যেমন JSON ডেটা) বা বাইনারি ডেটা (যেমন ব্লব বা অ্যারে-বাফার) পাঠাতে পারেন।
কোড উদাহরণ:
// ক্লায়েন্ট থেকে সার্ভারে টেক্সট ডেটা পাঠানো
socket.send("Hello, server!");
// ক্লায়েন্ট থেকে JSON ডেটা পাঠানো
let message = { type: "greeting", content: "Hello, server!" };
socket.send(JSON.stringify(message));
৪. WebSocket কানেকশন বন্ধ করা
কানেকশন বন্ধ করতে close() মেথড ব্যবহার করা হয়। আপনি এই মেথডের মাধ্যমে সংযোগ বন্ধ করার কারণ এবং কোডও পাঠাতে পারেন।
কোড উদাহরণ:
// কানেকশন বন্ধ করা
socket.close();
// বিশেষ স্ট্যাটাস কোড সহ কানেকশন বন্ধ করা
socket.close(1000, "Normal closure");
৫. WebSocket API তে নিরাপত্তা
যেহেতু Web Sockets একটি পূর্ণাঙ্গ কমিউনিকেশন প্রোটোকল, এর নিরাপত্তা নিশ্চিত করতে wss:// (WebSocket Secure) URL ব্যবহার করা উচিত, যা TLS (Transport Layer Security) এনক্রিপশন ব্যবহার করে। এটি ডেটা ট্রান্সফারের সময় তৃতীয় পক্ষের হস্তক্ষেপ থেকে রক্ষা করে।
কোড উদাহরণ:
let socket = new WebSocket("wss://secure-server.com/socket");
সারাংশ
Web Sockets API হল একটি শক্তিশালী টুল যা ক্লায়েন্ট এবং সার্ভারের মধ্যে রিয়েল-টাইম, ডুয়াল-ডিরেকশনাল (full-duplex) কমিউনিকেশন স্থাপন করতে ব্যবহৃত হয়। এটি WebSocket অবজেক্টের মাধ্যমে কানেকশন তৈরি করে, এবং বিভিন্ন ইভেন্ট (onopen, onmessage, onerror, onclose) ব্যবহার করে ডেটা আদান-প্রদান এবং কানেকশন পরিচালনা করা হয়। Web Sockets API এর মাধ্যমে আপনি দ্রুত এবং কার্যকরী ডেটা ট্রান্সফার নিশ্চিত করতে পারেন, বিশেষ করে চ্যাট, গেমিং, এবং লাইভ ট্র্যাকিং অ্যাপ্লিকেশনগুলির জন্য।
WebSocket ক্লাস একটি JavaScript API (অ্যাপ্লিকেশন প্রোগ্রামিং ইন্টারফেস) যা ব্রাউজার এবং সার্ভারের মধ্যে পূর্ণ দুদিকী (full-duplex) যোগাযোগের জন্য ব্যবহৃত হয়। এটি ক্লায়েন্ট-সাইডে JavaScript কোডের মাধ্যমে WebSocket কানেকশন স্থাপন করতে এবং পরিচালনা করতে সহায়তা করে। WebSocket ক্লাসের কিছু গুরুত্বপূর্ণ প্রোপার্টিজ এবং মেথড থাকে, যা WebSocket কানেকশনের অবস্থার ওপর ভিত্তি করে বিভিন্ন কার্যপদ্ধতি সম্পাদন করতে ব্যবহৃত হয়।
WebSocket ক্লাসের প্রোপার্টিজ
- url
- বিবরণ: এটি WebSocket কানেকশনের জন্য ব্যবহৃত URL (Uniform Resource Locator) প্রদান করে। এই URL সাধারণত
ws://(অথবা সুরক্ষিত কানেকশনের জন্যwss://) দ্বারা শুরু হয়, তারপরে হোস্ট এবং পোর্ট নাম্বার থাকে। উদাহরণ:
const socket = new WebSocket('ws://example.com/socket'); console.log(socket.url); // 'ws://example.com/socket'
- বিবরণ: এটি WebSocket কানেকশনের জন্য ব্যবহৃত URL (Uniform Resource Locator) প্রদান করে। এই URL সাধারণত
- readyState
- বিবরণ: এটি WebSocket কানেকশনের বর্তমান অবস্থার প্রতিনিধিত্ব করে। এই প্রোপার্টি একটি সংখ্যা প্রদান করে, যার মাধ্যমে কানেকশনের স্টেট নির্ধারণ করা যায়। এর তিনটি সম্ভাব্য মান আছে:
0(CONNECTING): কানেকশন স্থাপন হচ্ছে।1(OPEN): কানেকশন স্থাপন করা হয়েছে এবং ডেটা আদান-প্রদান সম্ভব।2(CLOSING): কানেকশন বন্ধ হচ্ছে।3(CLOSED): কানেকশন সম্পূর্ণরূপে বন্ধ হয়ে গেছে।
উদাহরণ:
const socket = new WebSocket('ws://example.com/socket'); console.log(socket.readyState); // 0 (CONNECTING)
- বিবরণ: এটি WebSocket কানেকশনের বর্তমান অবস্থার প্রতিনিধিত্ব করে। এই প্রোপার্টি একটি সংখ্যা প্রদান করে, যার মাধ্যমে কানেকশনের স্টেট নির্ধারণ করা যায়। এর তিনটি সম্ভাব্য মান আছে:
- protocol
- বিবরণ: এটি WebSocket কানেকশনের জন্য ব্যবহৃত প্রোটোকল (যদি থাকে) প্রদান করে। যখন ক্লায়েন্ট এবং সার্ভার কানেকশন শুরু করে, তারা একটি বিশেষ প্রোটোকল নির্দিষ্ট করতে পারে। এটি একটি স্ট্রিং হিসাবে প্রদান করা হয়।
উদাহরণ:
const socket = new WebSocket('ws://example.com/socket', 'chat'); console.log(socket.protocol); // 'chat'
- binaryType
- বিবরণ: এই প্রোপার্টি WebSocket থেকে প্রাপ্ত ডেটার বাইনারি ধরনের (binary type) নির্দেশ করে। এর দুটি সম্ভাব্য মান থাকে:
'blob': Blob অবজেক্ট (বিনারি ডেটা)।'arraybuffer': ArrayBuffer (বিনারি ডেটার একটি আর্কিটেকচারাল ধরন)।
উদাহরণ:
const socket = new WebSocket('ws://example.com/socket'); socket.binaryType = 'arraybuffer';
- বিবরণ: এই প্রোপার্টি WebSocket থেকে প্রাপ্ত ডেটার বাইনারি ধরনের (binary type) নির্দেশ করে। এর দুটি সম্ভাব্য মান থাকে:
- bufferedAmount
- বিবরণ: এটি WebSocket ক্লায়েন্টের সাথে ডেটা পাঠানোর জন্য অপেক্ষমাণ বাইনারি ডেটার পরিমাণ (বাইটে) প্রদর্শন করে। যদি ডেটা পাঠানো হচ্ছে এবং সেটি সার্ভারে পৌঁছাতে এখনও বাকি থাকে, তবে এই প্রোপার্টি সেই পরিমাণ দেখাবে।
উদাহরণ:
const socket = new WebSocket('ws://example.com/socket'); console.log(socket.bufferedAmount); // 0 (initially)
WebSocket ক্লাসের মেথড
- send(data)
- বিবরণ: এই মেথডটি সার্ভারে ডেটা পাঠানোর জন্য ব্যবহৃত হয়। এটি একটি স্ট্রিং বা বাইনারি ডেটা (ArrayBuffer বা Blob) হিসেবে ইনপুট নেবে।
উদাহরণ:
const socket = new WebSocket('ws://example.com/socket'); socket.onopen = function() { socket.send('Hello, Server!'); };
- close(code, reason)
- বিবরণ: এই মেথডটি WebSocket কানেকশন বন্ধ করতে ব্যবহৃত হয়। আপনি একটি কোড (যেমন 1000, যা 'normal closure' নির্দেশ করে) এবং একটি ইচ্ছেমত ব্যাখ্যা (reason) দিতে পারেন। তবে,
codeএবংreasonযুক্ত করা ঐচ্ছিক। উদাহরণ:
const socket = new WebSocket('ws://example.com/socket'); socket.onopen = function() { socket.close(1000, 'Normal Closure'); };
- বিবরণ: এই মেথডটি WebSocket কানেকশন বন্ধ করতে ব্যবহৃত হয়। আপনি একটি কোড (যেমন 1000, যা 'normal closure' নির্দেশ করে) এবং একটি ইচ্ছেমত ব্যাখ্যা (reason) দিতে পারেন। তবে,
- addEventListener(type, listener)
- বিবরণ: এটি WebSocket কানেকশনের জন্য বিভিন্ন ইভেন্টের শ্রোতা (listener) যোগ করার জন্য ব্যবহৃত হয়। এটি ক্লায়েন্ট সাইডে
open,message,close, এবংerrorইভেন্টগুলির জন্য শ্রোতা সংযুক্ত করতে পারে। উদাহরণ:
const socket = new WebSocket('ws://example.com/socket'); socket.addEventListener('message', function(event) { console.log('Message from server: ', event.data); });
- বিবরণ: এটি WebSocket কানেকশনের জন্য বিভিন্ন ইভেন্টের শ্রোতা (listener) যোগ করার জন্য ব্যবহৃত হয়। এটি ক্লায়েন্ট সাইডে
- removeEventListener(type, listener)
- বিবরণ: এটি আগের দেওয়া ইভেন্ট শ্রোতাকে সরানোর জন্য ব্যবহৃত হয়। অর্থাৎ, আপনি যদি কোনো ইভেন্ট শ্রোতা অপসারণ করতে চান, তবে এই মেথডটি ব্যবহার করবেন।
উদাহরণ:
const socket = new WebSocket('ws://example.com/socket'); function onMessage(event) { console.log('Received: ' + event.data); } socket.addEventListener('message', onMessage); socket.removeEventListener('message', onMessage);
সারাংশ
WebSocket ক্লাসটি JavaScript এর একটি শক্তিশালী উপাদান যা ক্লায়েন্ট এবং সার্ভারের মধ্যে রিয়েল-টাইম, পূর্ণ দুদিকী যোগাযোগ স্থাপন করতে ব্যবহৃত হয়। এটি বিভিন্ন প্রোপার্টি এবং মেথড প্রদান করে যা কানেকশন তৈরি, ডেটা পাঠানো এবং গ্রহণ করা, কানেকশন বন্ধ করা ইত্যাদি কার্যক্রম পরিচালনা করতে সাহায্য করে। WebSocket এর প্রোপার্টি যেমন readyState, url, protocol ইত্যাদি, এবং মেথড যেমন send(), close() ব্যবহার করে আপনি একটি কার্যকরী WebSocket কানেকশন তৈরি করতে পারেন এবং তা পরিচালনা করতে সক্ষম হন।
WebSocket প্রোটোকল ব্যবহার করে ক্লায়েন্ট এবং সার্ভারের মধ্যে রিয়েল-টাইম যোগাযোগের জন্য একটি WebSocket অবজেক্ট তৈরি করতে হয়। WebSocket অবজেক্ট তৈরি করা হলে, এটি একটি স্থায়ী কানেকশন তৈরি করে, যা ক্লায়েন্ট এবং সার্ভারের মধ্যে অবিচ্ছিন্নভাবে ডেটা আদান-প্রদান করতে সক্ষম হয়। এখানে WebSocket অবজেক্ট তৈরি এবং সংযোগ স্থাপনের প্রক্রিয়া বিস্তারিতভাবে আলোচনা করা হলো।
WebSocket অবজেক্ট তৈরি
WebSocket অবজেক্ট তৈরি করতে JavaScript এর WebSocket কনস্ট্রাক্টর ব্যবহার করা হয়। এই অবজেক্টটি ক্লায়েন্ট সাইডে একমাত্র WebSocket কানেকশন পরিচালনা করার জন্য ব্যবহৃত হয়।
সিনট্যাক্স:
let socket = new WebSocket(url);
যেখানে:
url: এটি WebSocket সার্ভারের URL (Uniform Resource Locator), যেটি সাধারণতws://অথবা নিরাপদ সংযোগের জন্যwss://দিয়ে শুরু হয়।
WebSocket সংযোগ স্থাপন
WebSocket অবজেক্ট তৈরি করার পর, এটি স্বয়ংক্রিয়ভাবে সার্ভারের সাথে সংযোগ স্থাপন শুরু করে। এর পরবর্তী ধাপগুলো হলো:
- সংযোগ স্থাপন: WebSocket অবজেক্টটি URL এর মাধ্যমে সার্ভারের সাথে যোগাযোগ স্থাপন করে। যদি সার্ভার WebSocket প্রোটোকল গ্রহণ করে এবং সংযোগ সফল হয়, তখন এটি
OPENস্টেটে চলে যায়। - ইভেন্ট লিসেনার: কানেকশন স্থাপন হওয়ার পরে, বিভিন্ন ইভেন্টগুলি ঘটতে থাকে যেমন:
open: সংযোগ সফল হলে এই ইভেন্টটি ট্রিগার হয়।message: সার্ভার থেকে ডেটা গ্রহণ হলে এই ইভেন্টটি ট্রিগার হয়।error: যদি কোনো সমস্যা ঘটে তবে এই ইভেন্টটি ট্রিগার হয়।close: কানেকশন বন্ধ হলে এই ইভেন্টটি ট্রিগার হয়।
উদাহরণ: WebSocket অবজেক্ট তৈরি এবং সংযোগ স্থাপন
এখানে একটি উদাহরণ দেওয়া হলো যেখানে ws://example.com/socket URL এর মাধ্যমে WebSocket সংযোগ স্থাপন করা হচ্ছে:
// WebSocket অবজেক্ট তৈরি
let socket = new WebSocket("ws://example.com/socket");
// সংযোগ সফল হলে (open ইভেন্ট)
socket.onopen = function(event) {
console.log("WebSocket সংযোগ স্থাপন হয়েছে!");
socket.send("হ্যালো সার্ভার!"); // সার্ভারে বার্তা পাঠানো
};
// সার্ভার থেকে ডেটা পাওয়া (message ইভেন্ট)
socket.onmessage = function(event) {
console.log("সার্ভার থেকে বার্তা:", event.data);
};
// সংযোগ বন্ধ হলে (close ইভেন্ট)
socket.onclose = function(event) {
console.log("WebSocket কানেকশন বন্ধ হয়েছে");
};
// ত্রুটি ঘটলে (error ইভেন্ট)
socket.onerror = function(error) {
console.log("WebSocket ত্রুটি:", error);
};
WebSocket সংযোগ এবং অবস্থা
WebSocket অবজেক্টে কিছু গুরুত্বপূর্ণ অবস্থা (states) থাকে, যা আপনাকে কানেকশনের বর্তমান অবস্থা বুঝতে সাহায্য করবে:
- 0 (CONNECTING): সংযোগ স্থাপন করা হচ্ছে।
- 1 (OPEN): কানেকশন সফলভাবে স্থাপন হয়েছে এবং ডেটা আদান-প্রদান সম্ভব।
- 2 (CLOSING): কানেকশন বন্ধ করার প্রক্রিয়া চলছে।
- 3 (CLOSED): কানেকশন সম্পূর্ণরূপে বন্ধ হয়ে গেছে।
console.log(socket.readyState); // কানেকশনের বর্তমান অবস্থা দেখতে পারবেন।
সার্ভার সাইডে WebSocket সংযোগ
WebSocket সংযোগটি সাধারণত সার্ভার সাইডেও হ্যান্ডেল করা হয়। সার্ভার সাধারণত WebSocket প্রোটোকল সমর্থন করে এমন একটি পরিবেশে (যেমন Node.js, Python, বা Java) কাজ করে। উদাহরণস্বরূপ, Node.js-এ ws লাইব্রেরি ব্যবহার করে WebSocket সার্ভার তৈরি করা যায়।
const WebSocket = require('ws');
const wss = new WebSocket.Server({ port: 8080 });
wss.on('connection', (ws) => {
console.log("একটি ক্লায়েন্ট সংযুক্ত হয়েছে");
ws.on('message', (message) => {
console.log("ক্লায়েন্ট থেকে বার্তা:", message);
});
ws.send('হ্যালো ক্লায়েন্ট!');
});
সারাংশ
WebSocket অবজেক্ট তৈরি করা এবং সংযোগ স্থাপন প্রক্রিয়া সহজ এবং সরল। JavaScript এর WebSocket কনস্ট্রাক্টর ব্যবহার করে ক্লায়েন্ট এবং সার্ভারের মধ্যে রিয়েল-টাইম ডেটা আদান-প্রদান সম্ভব হয়। সংযোগ সফল হলে, আপনি বিভিন্ন ইভেন্ট (যেমন open, message, error, close) ট্রিগার করে ডেটা আদান-প্রদান করতে পারেন। WebSocket প্রোটোকল ব্যবহারে আপনি অবিচ্ছিন্ন এবং দ্রুত যোগাযোগ ব্যবস্থা স্থাপন করতে পারবেন, যা অনেক ধরনের ইন্টারঅ্যাকটিভ অ্যাপ্লিকেশনগুলির জন্য উপযুক্ত।
Web Sockets প্রোটোকল ক্লায়েন্ট এবং সার্ভারের মধ্যে রিয়েল-টাইম যোগাযোগের জন্য ব্যবহৃত হয়, এবং এর মধ্যে কয়েকটি গুরুত্বপূর্ণ ইভেন্ট হ্যান্ডলার থাকে, যেগুলোর মাধ্যমে আপনি কানেকশন সম্পর্কিত বিভিন্ন কার্যকলাপ পরিচালনা করতে পারেন। এই ইভেন্ট হ্যান্ডলারগুলি হলো onopen, onmessage, onerror, এবং onclose। এগুলি আপনাকে কানেকশন স্থাপন, ডেটা গ্রহণ, ত্রুটি হ্যান্ডলিং, এবং কানেকশন বন্ধের সময় ব্যবস্থা নিতে সাহায্য করে।
onopen ইভেন্ট হ্যান্ডলার
onopen ইভেন্টটি তখন ট্রিগার হয় যখন Web Socket কানেকশন সফলভাবে খুলে যায়। অর্থাৎ, যখন ক্লায়েন্ট এবং সার্ভারের মধ্যে Web Socket কানেকশন স্থাপন হয়ে যায়, তখন এই ইভেন্টটি ঘটে।
উদাহরণ:
const socket = new WebSocket('ws://example.com/socket');
// কানেকশন সফল হলে এই ফাংশনটি চালু হবে
socket.onopen = function(event) {
console.log("WebSocket connection established", event);
};
- ব্যবহার:
onopenহ্যান্ডলারটি সাধারণত সেই জায়গায় ব্যবহার করা হয় যেখানে আপনি ওয়েবসাইট বা অ্যাপ্লিকেশনে ডেটা আদান-প্রদান শুরু করার জন্য প্রস্তুত। - প্রতিক্রিয়া: আপনি এখানে ফাংশনালিটি যোগ করতে পারেন, যেমন ডেটা পাঠানো বা ইউজার ইন্টারফেস আপডেট করা, যখন কানেকশন সফলভাবে স্থাপন হয়।
onmessage ইভেন্ট হ্যান্ডলার
onmessage ইভেন্টটি তখন ট্রিগার হয় যখন সার্ভার থেকে কোনো ডেটা ক্লায়েন্টে পাঠানো হয়। এটি Web Socket কানেকশনের মাধ্যমে প্রাপ্ত বার্তা বা ডেটা গ্রহণ করার জন্য ব্যবহৃত হয়।
উদাহরণ:
const socket = new WebSocket('ws://example.com/socket');
// সার্ভার থেকে ডেটা আসলে এই ফাংশনটি চালু হবে
socket.onmessage = function(event) {
console.log("Received message: ", event.data);
};
- ব্যবহার:
onmessageহ্যান্ডলারটি সাধারণত ডেটা প্রক্রিয়াকরণ বা UI আপডেটের জন্য ব্যবহৃত হয়, যেমন চ্যাট মেসেজ প্রাপ্তি বা গেম স্টেট পরিবর্তন। - ডেটা ফরম্যাট:
event.dataমাধ্যমে প্রাপ্ত ডেটা সাধারণত টেক্সট বা বাইনারি ফরম্যাটে হতে পারে।
onerror ইভেন্ট হ্যান্ডলার
onerror ইভেন্টটি তখন ট্রিগার হয় যখন Web Socket কানেকশনের সময় কোনো ত্রুটি (error) ঘটে। এটি Web Socket কানেকশনের ত্রুটি হ্যান্ডলিংয়ের জন্য ব্যবহৃত হয়।
উদাহরণ:
const socket = new WebSocket('ws://example.com/socket');
// ত্রুটি ঘটলে এই ফাংশনটি চালু হবে
socket.onerror = function(event) {
console.log("WebSocket error: ", event);
};
- ব্যবহার:
onerrorহ্যান্ডলারটি ত্রুটির কারণ বিশ্লেষণ এবং ইউজারকে ত্রুটি সম্পর্কিত বার্তা দেখানোর জন্য ব্যবহৃত হয়। এই ইভেন্টে ত্রুটির বিস্তারিত তথ্য পাওয়ার মাধ্যমে আপনি প্রয়োজনীয় ব্যবস্থা নিতে পারেন, যেমন কানেকশন পুনরুদ্ধার বা ইউজারকে জানানো।
onclose ইভেন্ট হ্যান্ডলার
onclose ইভেন্টটি তখন ট্রিগার হয় যখন Web Socket কানেকশন বন্ধ হয়ে যায়। এটি ক্লায়েন্ট বা সার্ভার যে কোনো পক্ষ থেকে কানেকশন বন্ধ করার পর ট্রিগার হয়।
উদাহরণ:
const socket = new WebSocket('ws://example.com/socket');
// কানেকশন বন্ধ হলে এই ফাংশনটি চালু হবে
socket.onclose = function(event) {
console.log("WebSocket connection closed", event);
};
- ব্যবহার:
oncloseহ্যান্ডলারটি কানেকশন বন্ধ হওয়ার পর প্রয়োজনীয় ক্লিনআপ বা রিসোর্স মুক্ত করার জন্য ব্যবহার করা হয়। এটি ইউজারকে জানানো, পুনরায় কানেকশন চেষ্টা করা, বা অন্য কোনো কার্যক্রম পরিচালনা করতে সহায়তা করে।
সারাংশ
- onopen: Web Socket কানেকশন সফলভাবে স্থাপিত হলে এটি ট্রিগার হয়। এখানে আপনি কানেকশন সফল হলে ডেটা পাঠানো বা অন্যান্য কার্যক্রম শুরু করতে পারেন।
- onmessage: সার্ভার থেকে ডেটা প্রাপ্তির পর এটি ট্রিগার হয়। এটি ডেটা গ্রহণ এবং প্রক্রিয়াকরণের জন্য ব্যবহৃত হয়।
- onerror: কানেকশনের সময় ত্রুটি ঘটলে এটি ট্রিগার হয়। এটি ত্রুটি হ্যান্ডলিং এবং সমস্যার সমাধান করার জন্য ব্যবহৃত হয়।
- onclose: Web Socket কানেকশন বন্ধ হওয়ার পর এটি ট্রিগার হয়। এটি সাধারণত ক্লিনআপ এবং পুনরায় কানেকশনের জন্য ব্যবহৃত হয়।
এই ইভেন্ট হ্যান্ডলারগুলো Web Sockets এর মাধ্যমে যোগাযোগকে আরও কার্যকরী এবং নির্ভরযোগ্য করে তোলে, কারণ এগুলো আপনাকে প্রতিটি পর্যায়ে প্রয়োজনীয় ব্যবস্থা নিতে সহায়তা করে।
Web Sockets প্রোটোকলে, একবার কানেকশন স্থাপন হলে, ক্লায়েন্ট এবং সার্ভার একে অপরকে ডেটা পাঠাতে এবং গ্রহণ করতে পারে। এর জন্য JavaScript এর send() মেথড ব্যবহৃত হয়, যা Web Socket কানেকশনের মাধ্যমে ডেটা পাঠানোর কাজ করে। এই মেথডটি ক্লায়েন্ট এবং সার্ভার উভয়েই ব্যবহার করতে পারে, যাতে একে অপরের সাথে রিয়েল-টাইমে ডেটা আদান-প্রদান করা যায়।
send() মেথড এর ব্যবহার
send() মেথড ব্যবহার করে Web Socket কানেকশনের মাধ্যমে বার্তা পাঠানো হয়। এই মেথডটি সাধারণত স্ট্রিং, বাইনারি ডেটা, অথবা JSON ফরম্যাটে ডেটা পাঠানোর জন্য ব্যবহৃত হয়।
Syntax:
webSocket.send(data);
- data: এটি সেই ডেটা যা আপনি পাঠাতে চান। এটি একটি স্ট্রিং, বাইনারি ডেটা (যেমন Blob বা ArrayBuffer), অথবা JSON ফরম্যাটে অবজেক্ট হতে পারে।
send() মেথডের ব্যবহারিক উদাহরণ
১. ক্লায়েন্ট থেকে সার্ভারে বার্তা পাঠানো
// WebSocket কানেকশন তৈরি করা
let socket = new WebSocket('wss://example.com/socket');
// কানেকশন খোলা হলে বার্তা পাঠানো
socket.onopen = function(event) {
// সার্ভারে বার্তা পাঠানো
socket.send('Hello, Server!');
};
// বার্তা গ্রহণের জন্য ইভেন্ট হ্যান্ডলার
socket.onmessage = function(event) {
console.log('Received from server: ' + event.data);
};
এই উদাহরণে, একটি Web Socket কানেকশন তৈরি করা হয়েছে wss://example.com/socket ইউআরএল এর মাধ্যমে। কানেকশন সফলভাবে খোলার পর, send() মেথডের মাধ্যমে ক্লায়েন্ট সার্ভারে "Hello, Server!" বার্তা পাঠাচ্ছে।
২. JSON ডেটা পাঠানো
যদি আপনি জটিল ডেটা যেমন অবজেক্ট পাঠাতে চান, তবে JSON ফরম্যাটে ডেটা পাঠানো যেতে পারে:
let socket = new WebSocket('wss://example.com/socket');
socket.onopen = function(event) {
// JSON ডেটা পাঠানো
let message = {
type: 'chat',
content: 'Hello, how are you?'
};
socket.send(JSON.stringify(message)); // JSON অবজেক্ট স্ট্রিং এ রূপান্তরিত করা
};
socket.onmessage = function(event) {
let receivedData = JSON.parse(event.data); // JSON স্ট্রিং পার্স করা
console.log(receivedData.content); // "Hello, how are you?"
};
এখানে, একটি JSON অবজেক্ট তৈরি করা হয়েছে এবং তা send() মেথডের মাধ্যমে পাঠানো হয়েছে। সার্ভার থেকে ফেরত আসা JSON ডেটা JSON.parse() ব্যবহার করে পুনরায় অবজেক্টে রূপান্তরিত করা হয়েছে।
send() মেথডের সীমাবদ্ধতা
- কানেকশন খোলা থাকা আবশ্যক:
send()মেথড শুধুমাত্র তখনই কাজ করবে যখন Web Socket কানেকশন সফলভাবে খোলা হবে। যদি কানেকশন এখনও খোলা না থাকে, তাহলে আপনিsend()মেথড কল করতে পারবেন না। - ব্রাউজারের পলিসি: কিছু ব্রাউজারে
send()মেথডের মাধ্যমে পাঠানো ডেটার সাইজের সীমাবদ্ধতা থাকতে পারে। উদাহরণস্বরূপ, বড় ফাইল বা বাইনারি ডেটা পাঠানোর জন্য অতিরিক্ত কনফিগারেশন বা পদ্ধতি প্রযোজ্য হতে পারে।
বার্তা গ্রহণ (onmessage ইভেন্ট)
ক্লায়েন্ট যখন send() মেথড ব্যবহার করে বার্তা পাঠায়, তখন সার্ভার সেই বার্তাটি গ্রহণ করে এবং যে কোনো সময়ে এটি আবার ক্লায়েন্টে পাঠাতে পারে। ক্লায়েন্ট বার্তা গ্রহণের জন্য onmessage ইভেন্ট হ্যান্ডলার ব্যবহার করে:
socket.onmessage = function(event) {
console.log('Received message: ' + event.data);
};
এখানে, event.data তে সার্ভার থেকে প্রাপ্ত বার্তা সংরক্ষিত থাকে। এটি স্ট্রিং, বাইনারি ডেটা অথবা JSON অবজেক্ট হতে পারে, যেটি প্রয়োজন অনুযায়ী প্রসেস করা যেতে পারে।
send() মেথডে বাইনারি ডেটা পাঠানো
Web Sockets প্রোটোকলে আপনি বাইনারি ডেটাও পাঠাতে পারেন, যেমন ছবি বা অন্য কোনো ফাইল। এই জন্য আপনি Blob বা ArrayBuffer ব্যবহার করতে পারেন।
উদাহরণ:
let socket = new WebSocket('wss://example.com/socket');
socket.onopen = function(event) {
let binaryData = new ArrayBuffer(8); // 8 বাইটের একটি বাইনারি ডেটা তৈরি
socket.send(binaryData); // বাইনারি ডেটা পাঠানো
};
এখানে, একটি ArrayBuffer ব্যবহার করে বাইনারি ডেটা তৈরি করা হয়েছে এবং send() মেথডের মাধ্যমে পাঠানো হয়েছে।
সারাংশ
Web Sockets এর send() মেথড ক্লায়েন্ট এবং সার্ভারের মধ্যে বার্তা পাঠানোর একটি মৌলিক উপকরণ। এটি স্ট্রিং, JSON অবজেক্ট, অথবা বাইনারি ডেটা পাঠানোর জন্য ব্যবহৃত হয়। একবার কানেকশন স্থাপন হলে, এই মেথডটি দুই পক্ষের মধ্যে দ্রুত, রিয়েল-টাইমে ডেটা আদান-প্রদান করতে সাহায্য করে। send() মেথডের মাধ্যমে Web Sockets প্রোটোকলে কার্যকরী এবং ইন্টারঅ্যাকটিভ যোগাযোগ নিশ্চিত করা হয়।
Read more