रियल-टाइम एंगेजमेंट: Rails 8 में Web Push Notifications

सोलो डेवलपर्स को मोबाइल फीचर्स बनाते समय अक्सर मुश्किलों का सामना करना पड़ता है। पुश नोटिफिकेशन भेजने के लिए पहले एक नेटिव ऐप की आवश्यकता होती थी। यदि आपके पास ऐप नहीं था, तो आप ईमेल या महंगे SMS पर निर्भर थे।

Web Push API इसे बदल देता है। यह iOS पर Safari सहित लगभग हर ब्राउज़र पर काम करता है। आप अपने Rails ऐप से सीधे यूजर के डिवाइस पर अलर्ट भेज सकते हैं। उन्हें App Store से कुछ भी डाउनलोड करने की आवश्यकता नहीं है।

यहाँ बताया गया है कि आप Rails 8 में इसे कैसे सेटअप कर सकते हैं।

वर्कफ़्लो (The Workflow)

  • सब्सक्रिप्शन: यूजर अपने ब्राउज़र में 'allow' पर क्लिक करता है। ब्राउज़र एक सब्सक्रिप्शन ऑब्जेक्ट प्रदान करता है।
  • स्टोरेज: आप इस ऑब्जेक्ट को यूजर से जोड़कर अपने डेटाबेस में सेव करते हैं।
  • द पुश: आपका Rails सर्वर ब्राउज़र पुश सर्विस को एक साइन्ड (signed) मैसेज भेजता है।
  • डिलीवरी: डिवाइस पर सर्विस वर्कर नोटिफिकेशन दिखाता है।

सेटअप स्टेप्स

1. सिक्योरिटी (Security)

अपने सर्वर की पहचान करने के लिए आपको VAPID कीज़ की आवश्यकता होती है। यह हैकर्स को फर्जी अलर्ट भेजने से रोकता है।

  • अपने Gemfile में web-push gem जोड़ें।
  • अपने टर्मिनल में web-push generate-vapid-keys चलाएं।
  • इन कीज़ को अपनी credentials फ़ाइल में सेव करें।

2. डेटाबेस (Database)

यूजर्स के पास अक्सर कई डिवाइस होते हैं। सब्सक्रिप्शन स्टोर करने के लिए एक मॉडल बनाएं।

  • चलाएं: rails g model WebPushSubscription user:references endpoint:string p256dh_key:string auth_key:string
  • चलाएं: rails db:migrate

3. सर्विस वर्कर (Service Worker)

public/service-worker.js बनाएं। यह फ़ाइल तब भी चलती है जब आपकी वेबसाइट बंद होती है। यह पुश इवेंट को सुनती है और नोटिफिकेशन दिखाती है।

4. फ्रंटएंड (Frontend)

  • अपने application.js में वर्कर को रजिस्टर करें।
  • अनुमति मांगने के लिए Stimulus कंट्रोलर का उपयोग करें। POST रिक्वेस्ट के माध्यम से सब्सक्रिप्शन डेटा अपने Rails कंट्रोलर को भेजें।

5. बैकग्राउंड जॉब्स (Background Jobs)

मुख्य रिक्वेस्ट साइकिल में कभी भी नोटिफिकेशन न भेजें। अपने ऐप को धीमा होने से बचाने के लिए बैकग्राउंड जॉब का उपयोग करें।

  • एक SendWebPushJob बनाएं।
  • यूजर के सब्सक्रिप्शन पर लूप चलाएं।
  • पेलोड भेजने के लिए web-push gem का उपयोग करें।
  • यदि सब्सक्रिप्शन अब मान्य नहीं हैं, तो उन्हें डिलीट कर दें।

आप केवल Rails और थोड़े से Javascript का उपयोग करके एक ऐसा ऐप बना सकते हैं जो नेटिव मोबाइल अनुभव जैसा महसूस होता है।

स्रोत: https://dev.to/zilton7/real-time-engagement-web-push-notifications-in-rails-8-5gdp