ویب پش نوٹیفیکیشنز اندرونی طور پر کیسے کام کرتی ہیں
آپ نئے پیغامات، آرڈر کی اپ ڈیٹس، یا ادائیگی کے یاد دہانوں کے لیے نوٹیفیکیشنز دیکھتے ہیں۔
یہ سادہ لگتا ہے۔ آپ کا بیک اینڈ ایک پیغام بھیجتا ہے اور صارف اسے وصول کرتا ہے۔
حقیقت میں، اس عمل میں بہت سے متحرک حصے شامل ہوتے ہیں۔ آپ کا بیک اینڈ کبھی بھی براہ راست براؤزر سے بات نہیں کرتا۔ اس کے بجائے، یہ ایک Push Service کا استعمال کرتا ہے۔
Google Chrome، Firebase Cloud Messaging استعمال کرتا ہے۔ Firefox، Mozilla Push Service استعمال کرتا ہے۔
ورک فلو اس طرح کام کرتا ہے:
Backend → Push Service → Browser → Service Worker → User
یہاں بتایا گیا ہے کہ آپ React اور Golang کا استعمال کرتے ہوئے اس سسٹم کو کیسے بنا سکتے ہیں۔
اجزاء (The Components)
- Frontend (React): اجازت طلب کرتا ہے اور ایک Service Worker کو رجسٹر کرتا ہے۔
- Service Worker: ایک بیک گراؤنڈ اسکرپٹ جو براؤزر میں رہتا ہے۔ یہ تب بھی ایونٹس کو سنبھالتا ہے جب آپ کی ویب سائٹ بند ہو۔
- Backend (Golang): سبسکرپشنز کو محفوظ کرتا ہے اور انکرپٹڈ (encrypted) پیغامات بھیجتا ہے۔
- Push Service: وہ درمیانی ذریعہ (middleman) جو پیغام کو براؤزر تک پہنچاتا ہے۔
سبسکرپشن کا بہاؤ (The Subscription Flow)
پیغام بھیجنے کے لیے، آپ کو ایک سبسکرپشن کی ضرورت ہوتی ہے۔
- صارف اجازت دیتا ہے۔
- براؤزر ایک سبسکرپشن آبجیکٹ تیار کرتا ہے جس میں ایک endpoint اور سیکیورٹی کیز (security keys) شامل ہوتی ہیں۔
- آپ کی React ایپ اس آبجیکٹ کو آپ کے Golang بیک اینڈ پر بھیجتی ہے۔
- آپ کا بیک اینڈ اسے ڈیٹا بیس میں محفوظ کر لیتا ہے۔
اپنے سرور کی شناخت کے لیے آپ کو VAPID کیز استعمال کرنی چاہئیں۔ فرنٹ اینڈ کے لیے ایک public key اور بیک اینڈ کے لیے ایک private key استعمال کریں۔ اپنی private key کبھی شیئر نہ کریں۔
عمل درآمد (The Implementation)
React میں، آپ پش ایونٹس (push events) سننے کے لیے ایک Service Worker کو رجسٹر کرتے ہیں۔ یہ ورکر بیک گراؤنڈ میں چلتا ہے۔ یہ ڈیٹا وصول کرتا ہے اور صارف کو نوٹیفیکیشن دکھاتا ہے۔
Golang میں، آپ انکرپشن اور VAPID آتھنٹیکیشن (authentication) کو سنبھالنے کے لیے ایک لائبریری استعمال کرتے ہیں۔ آپ کا سرور ڈیٹا بیس سے سبسکرپشن پڑھتا ہے، پے لوڈ (payload) کو انکرپٹ کرتا ہے، اور اسے براؤزر پش سروس کو بھیج دیتا ہے۔
پروڈکشن کے لیے اسکیلنگ (Scaling for Production)
چھوٹے پروجیکٹس کے لیے ایک سادہ سیٹ اپ کافی ہوتا ہے۔ ایک بڑے سسٹم کے لیے مزید چیزوں کی ضرورت ہوتی ہے۔
- متعدد ڈیوائسز کو سنبھالنا: ایک صارف کے پاس فون اور لیپ ٹاپ دونوں ہو سکتے ہیں۔ ہر صارف کے لیے متعدد سبسکرپشنز محفوظ کریں۔
- ڈیٹا کی صفائی: سبسکرپشنز کی میعاد ختم ہو جاتی ہے۔ اگر آپ کو 404 یا 410 ایرر ملے، تو اس سبسکرپشن کو اپنے ڈیٹا بیس سے حذف کر دیں۔
- Queues کا استعمال کریں: لاکھوں صارفین کے لیے، Kafka یا اس جیسا کوئی ٹول استعمال کریں۔ یہ آپ کے سسٹم کو نوٹیفیکیشنز کو غیر ہم آہنگ (asynchronously) طریقے سے پروسیس کرنے کی اجازت دیتا ہے۔
- Retries کا نظام نافذ کریں: نیٹ ورک کی ناکامیوں کو سنبھالنے کے لیے exponential backoff کا استعمال کریں۔
جب صارف ایکٹو ہو تو لائیو چیٹ کے لیے WebSockets اچھے ہیں۔ جب ٹیب بند ہو تو صارفین تک پہنچنے کے لیے Web Push بہتر ہے۔
