এক্সটেনশনে রিয়েল-টাইম আপডেট

রিয়েল-টাইম আপডেট আপনার সার্ভার থেকে সরাসরি আপনার এক্সটেনশন ইনস্টলেশনগুলিতে একটি তাৎক্ষণিক যোগাযোগের পথ তৈরি করে। কোনো ঘটনা ঘটার সাথে সাথেই আপনি ডেটা পাঠাতে এবং গ্রহণ করতে পারেন। আপনি এটি ইনস্ট্যান্ট মেসেজিং, ব্যাকগ্রাউন্ড টাস্ক চালু করা, বা ডিভাইসের ডেটা সিঙ্ক করার জন্য ব্যবহার করুন না কেন, এটি বেশ কিছু আধুনিক পরিষেবার জন্য একটি গুরুত্বপূর্ণ প্রক্রিয়া। ক্রোম এক্সটেনশনে রিয়েল-টাইম যোগাযোগের জন্য বেশ কিছু বিকল্প রয়েছে।

  • ওয়েব পুশ , বা পুশ এপিআই, একটি ওয়েব স্ট্যান্ডার্ড যা আপনাকে একটি ক্রোম এক্সটেনশনের মাধ্যমে যেকোনো পুশ প্রোভাইডার থেকে, এমনকি আপনার নিজের ওয়েব সার্ভার ব্যবহার করেও মেসেজ পাঠাতে ও গ্রহণ করতে দেয়।
  • chrome.gcm হলো একটি লিগ্যাসি এক্সটেনশন-নির্দিষ্ট এপিআই, যা আপনাকে ফায়ারবেস ক্লাউড মেসেজিং ব্যবহার করে বার্তা পাঠাতে ও গ্রহণ করতে দেয়।
  • ওয়েবসকেটস হলো একটি লো-লেভেল প্রোটোকল যা আপনার ক্রোম এক্সটেনশন এবং সার্ভারের মধ্যে একটি দ্বিমুখী সংযোগ স্থাপন করতে দেয়।

সাধারণ পরিস্থিতি

ক্রোম এক্সটেনশনের কিছু সাধারণ পরিস্থিতি নিচে দেওয়া হলো, যেখানে রিয়েল-টাইম যোগাযোগ অত্যন্ত গুরুত্বপূর্ণ:

ব্যবহারকারীদের পরিবর্তন সম্পর্কে অবহিত রাখুন।

আপনি যদি একাধিক ব্যবহারকারীর মধ্যে ফাইল, সেটিংস বা অন্যান্য তথ্য সিঙ্ক করেন, তাহলে আপনার এক্সটেনশনে সাইলেন্ট আপডেট পাঠানোর জন্য ওয়েব পুশ একটি আদর্শ উপায়, যা সার্ভার থেকে স্টেট আপডেট করার জন্য এক্সটেনশনটিকে জানিয়ে দেয়।

আপনি কি ব্যবহারকারীদের বাগ বা সমস্যা জানানোর সুযোগ দিচ্ছেন? কোনো আপডেট শেয়ার করার মতো হলেই, তা সরাসরি আপনার এক্সটেনশনে জানানোর জন্য আপনি একটি পুশ প্রোভাইডারের সাথে ইন্টিগ্রেট করতে পারেন।

ব্যবহারকারীদের কাছে বিজ্ঞপ্তি পাঠান।

যদিও আপনি সম্পূর্ণ ক্লায়েন্ট সাইডে নোটিফিকেশন পাঠাতে পারেন, কিন্তু কাকে, কী, কোথায় বা কখন নোটিফিকেশন পাঠাতে হবে তার জন্য যদি আপনার সার্ভার সাইড লজিক থাকে, তাহলে ওয়েব পুশই সবচেয়ে ভবিষ্যৎ-নিরাপদ বিকল্প।

শুধুমাত্র কিছু সংখ্যক ব্যবহারকারীকে বার্তা পাঠানোর জন্য পুশ (Push) হলো সেরা বিকল্প। যদিও ফায়ারবেস ক্লাউড মেসেজিং-এ টপিক (যা চ্যানেল নামেও পরিচিত) রয়েছে, এটি কেবল তাদের HTTP ক্লাউড মেসেজিং এপিআই-তেই উপলব্ধ। এটি chrome.gcm দ্বারা ব্যবহৃত লিগ্যাসি সংস্করণ থেকে ভিন্ন। আপনি যদি ক্রোম-এর লিগ্যাসি সংস্করণ (ক্রোম ১২১-এর পূর্ববর্তী) ব্যবহারকারীসহ সকল ব্যবহারকারীকে ব্যাপক বার্তা পাঠাতে চান, তাহলে chrome.gcm হলো আদর্শ বিকল্প। লিগ্যাসি ফায়ারবেস মেসেজিং এপিআই-এর উপর ভিত্তি করে নির্মিত হওয়ায়, chrome.gcm এক দশকেরও বেশি সময় ধরে ক্রোম-এ সমর্থিত হয়ে আসছে।

ব্যবহারকারীদের অ্যাকাউন্টে কোনো গুরুত্বপূর্ণ ঘটনা ঘটলে, যেমন নতুন বার্তা এলে বা কোনো ফাইল শেয়ার করা হলে, আপনি ওয়েব পুশ বা chrome.gcm ব্যবহার করে তাদের কাছে নোটিফিকেশন পাঠাতে পারেন।

ইনস্ট্যান্ট মেসেজিং

ঘন ঘন দ্বিমুখী যোগাযোগের প্রয়োজন? তাহলে একটি ওয়েব সকেট আপনার জন্য সেরা বিকল্প হতে পারে। এটি আপনার এক্সটেনশন এবং আপনার সার্ভারের মধ্যে (এমনকি সরাসরি অন্যান্য ব্যবহারকারীদের সাথেও) একটি দ্বিমুখী সংযোগ স্থাপন করে। এটি আপনাকে রিয়েল টাইমে ডেটা এবং বার্তা আদান-প্রদান করতে দেয়। যদিও সাধারণভাবে ওয়েবে এগুলি একটি দুর্দান্ত বিকল্প, তবে এক্সটেনশনের ক্ষেত্রে এগুলির কিছু সীমাবদ্ধতা রয়েছে যা আপনাকে মনে রাখতে হবে যদি আপনি সেগুলি ব্যবহার করার পরিকল্পনা করেন।

এই নির্দেশিকার বাকি অংশে আমরা উপলব্ধ বিকল্পগুলো আরও বিশদভাবে আলোচনা করব।

পুশ এপিআই ব্যবহার করে পুশ নোটিফিকেশন

পুশ এপিআই (Push API) ব্যবহার করে আপনি যেকোনো পুশ প্রোভাইডারের মাধ্যমে পুশ নোটিফিকেশন এবং মেসেজ পাঠাতে পারেন। পুশ এপিআই থেকে পাঠানো একটি পুশ বার্তা গ্রহণ করার সাথে সাথেই আপনার সার্ভিস ওয়ার্কার দ্বারা প্রসেস করা হবে। যদি এক্সটেনশনটি সাসপেন্ড করা থাকে, তবে একটি পুশ বার্তা এটিকে আবার সক্রিয় করে তুলবে। এক্সটেনশনে এটি ব্যবহার করার প্রক্রিয়াটি ওপেন ওয়েবে ব্যবহারের পদ্ধতির মতোই।

chrome.gcm দিয়ে পুশ নোটিফিকেশন

chrome.gcm এপিআইটি ফায়ারবেস ক্লাউড মেসেজিং (FCM)-এর সাথে একটি সরাসরি সংযোগ প্রদান করে, যা ওয়েব অ্যাপ্লিকেশন এবং মোবাইল অ্যাপে রিয়েল-টাইম আপডেট পাঠানোর একটি পরিষেবা। এটি একটি ক্রোম-নির্দিষ্ট এক্সটেনশন এপিআই যা ব্রাউজারগুলিতে পুশ (Push ) উপলব্ধ হওয়ার বহু বছর আগে যুক্ত করা হয়েছিল। এটি ফায়ারবেসের (বর্তমানে অপ্রচলিত) লিগ্যাসি এইচটিটিপি (HTTP) এপিআই ব্যবহার করে তৈরি করা হয়েছিল। যদিও এই এপিআইগুলি অন্যত্র অপ্রচলিত, এক্সটেনশনগুলিতে সেগুলি অপ্রচলিত নয় । অদূর ভবিষ্যতে এগুলি কাজ করতে থাকবে। তবে, যেহেতু এটি লিগ্যাসি পুশ ব্যাকএন্ড, তাই এতে টপিক (Topics)-এর মতো ফিচারের অভাব রয়েছে।

ক্রোমে ব্যবহারকারীদের কাছে নোটিফিকেশন পৌঁছানোর জন্য একটি FCM ব্যাকএন্ড পরিষেবা থাকা আবশ্যক হলেও, মেসেজ পাঠানোর জন্য আপনাকে chrome.gcm ব্যবহার করতে হবে না। সমস্ত পুশ প্রোভাইডার ওয়েব পুশ ব্যবহার করে একটি ফায়ারবেস অ্যাকাউন্টে মেসেজ এবং ইভেন্ট পাঠাতে ও গ্রহণ করতে সক্ষম। যদিও এটি এখনও একটি সম্পূর্ণরূপে সমর্থিত ক্রোম এক্সটেনশন এপিআই, তবে এর মতো এক্সটেনশন-নির্দিষ্ট এপিআই-এর পরিবর্তে পুশ এপিআই- এর মতো ওয়েব স্ট্যান্ডার্ড ব্যবহার করাই উত্তম। যদি আপনার ব্যবহারের ক্ষেত্রে chrome.gcm সবচেয়ে উপযুক্ত হয়, তবে একেবারে শুরু থেকে কীভাবে chrome.gcm সেট আপ করতে হয় তার একটি বিস্তারিত নির্দেশিকা রয়েছে।

ওয়েবসকেটস-এর মাধ্যমে রিয়েল টাইম মেসেজ

এক দশকেরও বেশি সময় ধরে ওয়েবে রিয়েল-টাইম মেসেজিংয়ের ক্ষেত্রে ওয়েবসকেটস একটি মূল ভিত্তি হয়ে আছে। ওয়েবে রিয়েল-টাইম ইভেন্টের জন্য এটিই সবচেয়ে নির্ভরযোগ্য বিকল্প, যা একটি নিরবচ্ছিন্ন, দ্বিমুখী কথোপকথন প্রদান করে। ওয়েবসকেটস বিভিন্ন এক্সটেনশন কম্পোনেন্টে কাজ করে, যেমন কন্টেন্ট স্ক্রিপ্ট , পপআপ , সাইডপ্যানেল বা ব্যাকগ্রাউন্ড সার্ভিস ওয়ার্কার । যদিও সাধারণভাবে ওয়েবের জন্য এটি একটি চমৎকার বিকল্প, তবে এক্সটেনশনের ক্ষেত্রে এর কিছু সীমাবদ্ধতা রয়েছে যা ব্যবহারের পরিকল্পনা করলে আপনাকে মনে রাখতে হবে।

পুশ নোটিফিকেশনের জন্য খুব একটা ভালো নয়।

যেহেতু ওয়েবসকেট chrome.gcm এর মতো কোনো এক্সটেনশন প্ল্যাটফর্ম এপিআই ব্যবহার না করে ওয়েব প্ল্যাটফর্মে চলে, তাই আপনার এক্সটেনশনের বাইরে থেকে কোনো ওয়েবসকেট সংযোগ শুরু হলে ক্রোমের পক্ষে আপনার এক্সটেনশনটিকে সক্রিয় করার কোনো উপায় নেই।

শুধুমাত্র সক্রিয় সংযোগ

৩০ সেকেন্ড পর অব্যবহৃত এক্সটেনশনগুলোকে ক্রোম সাসপেন্ড করে দেয়। এক্সটেনশনটি "ব্যবহৃত হচ্ছে" কিনা, তা নির্ধারণ করতে ক্রোম বেশ কিছু পদ্ধতি ব্যবহার করে, যার মধ্যে একটি হলো সক্রিয় ওয়েবসকেট সংযোগ। যে এক্সটেনশনটি গত ৩০ সেকেন্ডের মধ্যে কোনো ওয়েবসকেট বার্তা পাঠিয়েছে বা গ্রহণ করেছে, ক্রোম সেটিকে সাসপেন্ড করবে না। আপনি যদি আপনার এক্সটেনশনে ওয়েবসকেট ব্যবহার করেন এবং এটি যাতে সময়ের আগেই বন্ধ না হয়ে যায় তা নিশ্চিত করতে চান, তবে সংযোগটি বজায় রাখার জন্য আপনি একটি হার্টবিট বার্তা পাঠাতে পারেন। এর জন্য সার্ভারে নির্দিষ্ট সময় পর পর বার্তা পাঠাতে হয়, যা সার্ভার এবং ক্রোম উভয়কেই জানিয়ে দেয় যে আপনি এখনও সক্রিয় আছেন। একটি ওয়েবসকেটকে অনির্দিষ্টকালের জন্য কীভাবে সচল রাখা যায় তার একটি উদাহরণ আমাদের ওয়েবসকেট ডকুমেন্টেশনে পাওয়া যাবে।