কিভাবে ধাক্কা কাজ করে

Matt Gaunt

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

পুশ বাস্তবায়নের তিনটি মূল ধাপ হলো:

  1. কোনো ব্যবহারকারীকে পুশ মেসেজের জন্য সাবস্ক্রাইব করতে ক্লায়েন্ট সাইড লজিক যোগ করা (অর্থাৎ আপনার ওয়েব অ্যাপের জাভাস্ক্রিপ্ট এবং ইউআই, যা একজন ব্যবহারকারীকে পুশ মেসেজের জন্য রেজিস্টার করে)।
  2. আপনার ব্যাক-এন্ড / অ্যাপ্লিকেশন থেকে করা এপিআই কল, যা ব্যবহারকারীর ডিভাইসে একটি পুশ মেসেজ পাঠায়।
  3. সার্ভিস ওয়ার্কার জাভাস্ক্রিপ্ট ফাইলটি ডিভাইসে পুশ ইভেন্ট এলে একটি 'পুশ ইভেন্ট' গ্রহণ করবে। এই জাভাস্ক্রিপ্ট ফাইলের মাধ্যমেই আপনি একটি নোটিফিকেশন দেখাতে পারবেন।

চলুন এই প্রতিটি ধাপে কী কী অন্তর্ভুক্ত রয়েছে তা আরেকটু বিস্তারিতভাবে দেখে নেওয়া যাক।

ধাপ ১: ক্লায়েন্ট সাইড

প্রথম ধাপ হলো একজন ব্যবহারকারীকে পুশ মেসেজিংয়ের জন্য "সাবস্ক্রাইব" করা।

কোনো ব্যবহারকারীকে সাবস্ক্রাইব করতে দুটি জিনিস প্রয়োজন। প্রথমত, ব্যবহারকারীকে পুশ মেসেজ পাঠানোর জন্য তার কাছ থেকে অনুমতি নেওয়া। দ্বিতীয়ত, ব্রাউজার থেকে একটি PushSubscription নেওয়া।

একটি PushSubscription সেই ব্যবহারকারীকে পুশ মেসেজ পাঠানোর জন্য প্রয়োজনীয় সমস্ত তথ্য থাকে। আপনি এটিকে সেই ব্যবহারকারীর ডিভাইসের একটি আইডি হিসেবে ভাবতে পারেন।

এই পুরো কাজটি জাভাস্ক্রিপ্টে পুশ এপিআই (Push API) ব্যবহার করে করা হয়।

Browser Support

  • ক্রোম: ৪২।
  • প্রান্ত: ১৭।
  • ফায়ারফক্স: ৪৪।
  • সাফারি: ১৬।

Source

কোনো ব্যবহারকারীকে সাবস্ক্রাইব করার আগে আপনাকে এক সেট 'অ্যাপ্লিকেশন সার্ভার কী' তৈরি করতে হবে, যা নিয়ে আমরা পরে আলোচনা করব।

অ্যাপ্লিকেশন সার্ভার কী, যা VAPID কী নামেও পরিচিত, আপনার সার্ভারের জন্য অনন্য। এগুলি একটি পুশ সার্ভিসকে জানতে সাহায্য করে যে কোন অ্যাপ্লিকেশন সার্ভার একজন ব্যবহারকারীকে সাবস্ক্রাইব করেছে এবং এটি নিশ্চিত করে যে সেই একই সার্ভার ওই ব্যবহারকারীকে পুশ মেসেজ পাঠাচ্ছে।

একবার আপনি ব্যবহারকারীকে সাবস্ক্রাইব করে একটি PushSubscription তৈরি করে ফেললে, আপনাকে সেই PushSubscription বিবরণ আপনার ব্যাকএন্ড / সার্ভারে পাঠাতে হবে। আপনার সার্ভারে, আপনি এই সাবস্ক্রিপশনটি একটি ডেটাবেসে সংরক্ষণ করবেন এবং এটি ব্যবহার করে সেই ব্যবহারকারীকে একটি পুশ মেসেজ পাঠাবেন।

১. পুশ মেসেজ পাঠানোর অনুমতি নিন। ২. পুশ সাবস্ক্রিপশন নিন। ৩. আপনার সার্ভারে পুশ সাবস্ক্রিপশনটি পাঠান।

ধাপ ২: একটি পুশ মেসেজ পাঠান

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

কিছু প্রশ্ন যা আপনি নিজেকে জিজ্ঞাসা করতে পারেন:

  • পুশ সার্ভিস বলতে কী বোঝায় এবং এটি কাদের জন্য?
  • এপিআইটি দেখতে কেমন? এটি কি JSON, XML, নাকি অন্য কিছু?
  • এপিআই কী করতে পারে?

পুশ সার্ভিস বলতে কী বোঝায় এবং এটি কাদের জন্য?

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

প্রতিটি ব্রাউজার তাদের পছন্দমতো যেকোনো পুশ সার্ভিস ব্যবহার করতে পারে, এর উপর ডেভেলপারদের কোনো নিয়ন্ত্রণ নেই। এটি কোনো সমস্যা নয়, কারণ প্রতিটি পুশ সার্ভিস একই এপিআই কল আশা করে। অর্থাৎ, পুশ সার্ভিসটি কে, তা নিয়ে আপনাকে ভাবতে হবে না। আপনাকে শুধু নিশ্চিত করতে হবে যে আপনার এপিআই কলটি বৈধ।

পুশ মেসেজ পাঠানোর জন্য উপযুক্ত URL (অর্থাৎ পুশ সার্ভিসের URL) পেতে হলে, আপনাকে শুধু একটি PushSubscription এর endpoint ভ্যালুটি দেখতে হবে।

নিচে PushSubscription থেকে প্রাপ্ত মানগুলির একটি উদাহরণ দেওয়া হলো:

{
  "endpoint": "https://random-push-service.com/some-kind-of-unique-id-1234/v2/",
  "keys": {
    "p256dh": "BNcRdreALRFXTkOOUHK1EtK2wtaz5Ry4YfYCA_0QTpQtUbVlUls0VJXg7A8u-Ts1XbjhazAkj7I99e8QcYP7DkM=",
    "auth": "tBHItJI5svbpez7KI4CCXg=="
  }
}

এই ক্ষেত্রে এন্ডপয়েন্টটি হলো https://random-push-service.com/some-kind-of-unique-id-1234/v2/ । পুশ সার্ভিসটি হলো 'random-push-service.com' এবং প্রতিটি এন্ডপয়েন্ট একজন ব্যবহারকারীর জন্য স্বতন্ত্র, যা 'some-kind-of-unique-id-1234' দ্বারা নির্দেশিত। আপনি যখন পুশ নিয়ে কাজ শুরু করবেন, তখন এই প্যাটার্নটি লক্ষ্য করবেন।

সাবস্ক্রিপশনের মূল বিষয়গুলো পরে আলোচনা করা হবে।

এপিআইটি দেখতে কেমন?

আমি উল্লেখ করেছিলাম যে প্রতিটি ওয়েব পুশ সার্ভিস একই এপিআই কল প্রত্যাশা করে। সেই এপিআইটি হলো ওয়েব পুশ প্রোটোকল । এটি একটি IETF স্ট্যান্ডার্ড যা নির্ধারণ করে দেয়, কীভাবে একটি পুশ সার্ভিসে এপিআই কল করতে হয়।

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

এপিআই কী করতে পারে?

এই এপিআইটি ডেটা সহ বা ডেটা ছাড়া ব্যবহারকারীকে বার্তা পাঠানোর একটি উপায় এবং বার্তাটি কীভাবে পাঠাতে হবে তার নির্দেশাবলী প্রদান করে।

পুশ মেসেজের মাধ্যমে আপনি যে ডেটা পাঠান তা অবশ্যই এনক্রিপ্টেড হতে হবে। এর কারণ হলো, এটি পুশ সার্ভিসগুলোকে—যারা যে কেউ হতে পারে—পুশ মেসেজের সাথে পাঠানো ডেটা দেখতে বাধা দেয়। এটি গুরুত্বপূর্ণ, কারণ ব্রাউজারই সিদ্ধান্ত নেয় কোন পুশ সার্ভিসটি ব্যবহার করা হবে, যা ব্রাউজারগুলোকে অনিরাপদ পুশ সার্ভিস ব্যবহার করার সুযোগ করে দিতে পারে।

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

নির্দেশাবলীতে নিম্নলিখিত বিবরণ অন্তর্ভুক্ত রয়েছে:

  • একটি পুশ মেসেজের টাইম-টু-লিভ। এটি নির্ধারণ করে যে, একটি মেসেজ ডেলিভারি না করে সরিয়ে ফেলার আগে কতক্ষণ কিউতে থাকবে।

  • বার্তার জরুরি অবস্থা নির্ধারণ করুন। এটি তখন কাজে আসে যখন পুশ সার্ভিসটি শুধুমাত্র উচ্চ অগ্রাধিকারের বার্তা পাঠিয়ে ব্যবহারকারীর ব্যাটারির আয়ু বাঁচায়।

  • পুশ মেসেজকে একটি 'টপিক' নাম দিন, যা যেকোনো অপেক্ষমান মেসেজকে এই নতুন মেসেজটি দিয়ে প্রতিস্থাপন করবে।

যখন আপনার সার্ভার একটি পুশ মেসেজ পাঠাতে চায়, তখন এটি একটি পুশ সার্ভিসে ওয়েব পুশ প্রোটোকলের মাধ্যমে অনুরোধ পাঠায়, আর এভাবেই মেসেজগুলো ডিভাইসে এসে পৌঁছায়।

ধাপ ৩: ব্যবহারকারীর ডিভাইসে ইভেন্টটি পুশ করুন।

একবার পুশ মেসেজ পাঠানোর পর, পুশ সার্ভিসটি আপনার মেসেজটি তার সার্ভারে ততক্ষণ পর্যন্ত রেখে দেবে যতক্ষণ না নিম্নলিখিত ঘটনাগুলোর মধ্যে কোনো একটি ঘটে:

  1. ডিভাইসটি অনলাইন হয় এবং পুশ সার্ভিসটি বার্তাটি পৌঁছে দেয়।
  2. মেসেজটির মেয়াদ শেষ হয়ে যায়। এমনটা হলে পুশ সার্ভিসটি মেসেজটিকে তার কিউ থেকে সরিয়ে দেয় এবং এটি আর কখনো ডেলিভার করা হয় না।

যখন পুশ সার্ভিসটি কোনো বার্তা প্রেরণ করে, তখন ব্রাউজারটি বার্তাটি গ্রহণ করে, যেকোনো ডেটা ডিক্রিপ্ট করে এবং আপনার সার্ভিস ওয়ার্কারে একটি push ইভেন্ট প্রেরণ করে।

সার্ভিস ওয়ার্কার হলো একটি "বিশেষ" জাভাস্ক্রিপ্ট ফাইল। আপনার পেজটি খোলা না থাকলেও ব্রাউজার এই জাভাস্ক্রিপ্টটি চালাতে পারে। এমনকি ব্রাউজার বন্ধ থাকলেও এটি এই জাভাস্ক্রিপ্টটি চালাতে পারে। সার্ভিস ওয়ার্কারের কিছু এপিআই (API) থাকে, যেমন `push`, যা ওয়েব পেজে পাওয়া যায় না (অর্থাৎ, যে এপিআইগুলো সার্ভিস ওয়ার্কার স্ক্রিপ্টের বাইরে ব্যবহার করা যায় না)।

সার্ভিস ওয়ার্কারের 'পুশ' ইভেন্টের ভেতরেই আপনি যেকোনো ব্যাকগ্রাউন্ড টাস্ক সম্পাদন করতে পারেন। আপনি অ্যানালিটিক্স কল করতে, পেজ অফলাইনে ক্যাশ করতে এবং নোটিফিকেশন দেখাতে পারেন।

১. ডিভাইসে বার্তা এসে পৌঁছায়। ২. ব্রাউজার সার্ভিস ওয়ার্কারকে জাগিয়ে তোলে। ৩. পুশ ইভেন্টটি প্রেরণ করা হয়।

এটাই পুশ মেসেজিংয়ের সম্পূর্ণ কার্যপ্রক্রিয়া।

এরপর কোথায় যাবেন

কোড ল্যাব