Socket.IO কি?

Socket.IO একটি JavaScript লাইব্রেরি যা ওয়েব ক্লায়েন্ট এবং সার্ভারের মধ্যে রিয়েল-টাইম, দ্বিমুখী যোগাযোগ সক্ষম করে। যদিও এটি WebSocket কে তার প্রাথমিক ট্রান্সপোর্ট হিসাবে ব্যবহার করে, এটি স্বয়ংক্রিয়ভাবে HTTP long-polling এ ফিরে যায় যখন WebSocket উপলব্ধ নয়, যা বিভিন্ন নেটওয়ার্ক পরিবেশ এবং প্রক্সি জুড়ে সংযোগকে আরও নির্ভরযোগ্য করে তোলে। Socket.IO কাঁচা ট্রান্সপোর্টের উপরে তার নিজস্ব প্রোটোকল স্তর যোগ করে — একটি কাস্টম হ্যান্ডশেক, হার্টবিট, স্বয়ংক্রিয় পুনরায় সংযোগ এবং একটি নামযুক্ত-ইভেন্ট সিস্টেম সহ — তাই এটি একটি সাধারণ WebSocket সার্ভারের সাথে বিনিময়যোগ্য নয়।

Socket.IO এর একটি মূল বৈশিষ্ট্য হল এর ইভেন্ট মডেল: কাঁচা বার্তা পাঠানোর পরিবর্তে, ক্লায়েন্ট এবং সার্ভার নামযুক্ত ইভেন্ট নির্গত এবং শোনে (যেমন, chat message, user joined), যা অ্যাপ্লিকেশন লজিককে পরিষ্কার এবং সংগঠিত করা সহজ করে তোলে।

টুল বর্ণনা

এই টুলটি একটি ইন্টারেক্টিভ Socket.IO ক্লায়েন্ট প্রদান করে যা সম্পূর্ণভাবে ব্রাউজারে চলে। যেকোনো Socket.IO সার্ভারের সাথে সংযোগ করুন, একটি নামযুক্ত ইভেন্ট বেছে নিন, পাঠ্য বা JSON বার্তা রচনা করুন, সেগুলি পাঠান এবং একটি টাইমস্ট্যাম্পযুক্ত লগে আসা ইভেন্ট এবং সার্ভার প্রতিক্রিয়া দেখুন। এটি সক্রিয় ট্রান্সপোর্ট স্তর (WebSocket বা polling) ও দেখায় যাতে আপনি যাচাই করতে পারেন যে প্রত্যাশিত আপগ্রেড ঘটেছে।

বৈশিষ্ট্য

  • নামযুক্ত ইভেন্ট সমর্থন — পাঠানোর আগে যেকোনো ইভেন্ট নাম নির্দিষ্ট করুন যাতে বার্তাগুলি সার্ভারে সঠিক শ্রোতার অধীনে পৌঁছায়।
  • ট্রান্সপোর্ট দৃশ্যমানতা — প্রদর্শন করে যে সংযোগটি WebSocket বা HTTP polling ট্রান্সপোর্ট ব্যবহার করছে কিনা, এবং Socket.IO আপগ্রেড হ্যান্ডশেক সম্পূর্ণ হওয়ার পরে স্বয়ংক্রিয়ভাবে আপডেট হয়।
  • পাঠ্য এবং JSON মোড — সাধারণ পাঠ্যে পেলোড রচনা করুন বা JSON মোডে স্যুইচ করুন সিনট্যাক্স হাইলাইটিং এবং পাঠানোর আগে যাচাইকরণ সহ।

বিকল্পগুলি ব্যাখ্যা করা হয়েছে

সার্ভার URL — Socket.IO সার্ভারের সম্পূর্ণ HTTP(S) URL (যেমন, https://example.com/socketio)। Socket.IO সার্ভারগুলি প্রায়শই /socket.io/ এর মতো একটি পথে শোনে; ক্লায়েন্ট হ্যান্ডশেক পথ স্বয়ংক্রিয়ভাবে পরিচালনা করে।

ইভেন্ট নাম — একটি বার্তা পাঠানোর সময় নির্গত করার জন্য Socket.IO ইভেন্টের নাম। ডিফল্ট হল message। এটি পরিবর্তন করুন আপনার সার্ভার যে ইভেন্টটি শোনে তার সাথে মেলাতে (যেমন, chat, ping, data)।

ডেটা প্রকারপাঠ্য এবং JSON এর মধ্যে স্যুইচ করুন। JSON মোডে পেলোড যাচাই করা হয় এবং একটি পার্সড অবজেক্ট হিসাবে পাঠানো হয়; পাঠ্য মোডে এটি একটি সাধারণ স্ট্রিং হিসাবে পাঠানো হয়।

স্বয়ংক্রিয় স্ক্রল — সক্ষম হলে, বার্তা লগ স্বয়ংক্রিয়ভাবে সর্বশেষ এন্ট্রিতে স্ক্রল করে যখন নতুন বার্তা আসে।

এটি কীভাবে কাজ করে

ক্লায়েন্ট অফিসিয়াল Socket.IO JavaScript SDK ব্যবহার করে লক্ষ্য সার্ভারের সাথে সংযোগ করে। প্রাথমিক HTTP হ্যান্ডশেকের পরে, Socket.IO HTTP polling থেকে WebSocket এ ট্রান্সপোর্ট আপগ্রেড করার চেষ্টা করে। টুলটি রিপোর্ট করে কোন ট্রান্সপোর্ট সক্রিয় এবং যখনই একটি আপগ্রেড ঘটে তখন লেবেল আপডেট করে। সার্ভার থেকে প্রাপ্ত সমস্ত ইভেন্ট — ইভেন্ট নাম নির্বিশেষে — ক্যাপচার করা হয় এবং একটি টাইমস্ট্যাম্প সহ লগে প্রদর্শিত হয়।

টিপস

  • যদি সংযোগ সফল হয় কিন্তু কোনো বার্তা প্রদর্শিত না হয়, নিশ্চিত করুন যে সার্ভার সংযোগকারী ক্লায়েন্টে ইভেন্ট নির্গত করে, শুধুমাত্র অন্যান্য ক্লায়েন্টে নয়।
  • ইভেন্ট-নাম ক্ষেত্র ব্যবহার করুন সার্ভার-সাইড হ্যান্ডলারগুলি পৃথকভাবে পরীক্ষা করতে কোনো কোড লেখা ছাড়াই।
  • একটি "polling" ট্রান্সপোর্ট যা কখনো "websocket" এ আপগ্রেড হয় না প্রায়শই একটি রিভার্স প্রক্সি নির্দেশ করে যা WebSocket আপগ্রেড সমর্থন করে না (যেমন, sticky sessions ছাড়া একটি লোড ব্যালেন্সার)।