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 কানেকশন তৈরি করতে পারেন এবং তা পরিচালনা করতে সক্ষম হন।
Read more