இணையப் புஷ் அறிவிப்புகள் (Web Push Notifications) உட்புறமாக எவ்வாறு செயல்படுகின்றன

புதிய செய்திகள், ஆர்டர் மாற்றங்கள் அல்லது கட்டண நினைவூட்டல்களுக்கான அறிவிப்புகளை நீங்கள் பார்க்கிறீர்கள்.

இது எளிமையாகத் தோன்றலாம். உங்கள் backend ஒரு செய்தியை அனுப்புகிறது மற்றும் பயனர் அதைத் பெறுகிறார்.

உண்மையில், இந்தச் செயல்முறையில் பல நகரும் பாகங்கள் உள்ளன. உங்கள் backend ஒருபோதும் உலாவியுடன் (browser) நேரடியாகப் பேசுவதில்லை. அதற்குப் பதிலாக, அது ஒரு Push Service-ஐப் பயன்படுத்துகிறது.

Google Chrome, Firebase Cloud Messaging-ஐப் பயன்படுத்துகிறது. Firefox, Mozilla Push Service-ஐப் பயன்படுத்துகிறது.

இந்தச் செயல்முறை இவ்வாறு செயல்படுகிறது:

Backend → Push Service → Browser → Service Worker → User

React மற்றும் Golang பயன்படுத்தி இந்த அமைப்பை எவ்வாறு உருவாக்குவது என்பது இதோ.

கூறுகள் (The Components)

  1. Frontend (React): அனுமதியைக் கோருகிறது மற்றும் ஒரு Service Worker-ஐப் பதிவு செய்கிறது.
  2. Service Worker: உலாவியில் இயங்கும் ஒரு பின்னணி ஸ்கிரிப்ட் (background script). உங்கள் இணையதளம் மூடப்பட்டிருக்கும் போது கூட இது நிகழ்வுகளைக் கையாளும்.
  3. Backend (Golang): சந்தாக்களை (subscriptions) சேமிக்கிறது மற்றும் குறியாக்கம் செய்யப்பட்ட (encrypted) செய்திகளை அனுப்புகிறது.
  4. Push Service: உலாவியிடம் செய்தியை வழங்கும் ஒரு இடைத்தரகர்.

சந்தா செயல்முறை (The Subscription Flow)

ஒரு செய்தியை அனுப்ப, உங்களுக்கு ஒரு சந்தா (subscription) தேவை.

  • பயனர் அனுமதியளிக்கிறார்.
  • உலாவியானது ஒரு endpoint மற்றும் பாதுகாப்பு விசைகளைக் (security keys) கொண்ட ஒரு subscription object-ஐ உருவாக்குகிறது.
  • உங்கள் React app இந்த object-ஐ உங்கள் Golang backend-க்கு அனுப்புகிறது.
  • உங்கள் backend அதை ஒரு தரவுத்தளத்தில் (database) சேமிக்கிறது.

உங்கள் சேவையகத்தை (server) அடையாளம் காண நீங்கள் VAPID விசைகளைப் பயன்படுத்த வேண்டும். Frontend-க்கு ஒரு public key மற்றும் backend-க்கு ஒரு private key-ஐப் பயன்படுத்தவும். உங்கள் private key-ஐ ஒருபோதும் பகிர வேண்டாம்.

செயல்படுத்துதல் (The Implementation)

React-இல், push நிகழ்வுகளைக் கவனிக்க ஒரு Service Worker-ஐப் பதிவு செய்கிறீர்கள். இந்த worker பின்னணியில் இயங்கும். இது தரவைப் பெற்று பயனருக்கு அறிவிப்பைக் காண்பிக்கும்.

Golang-இல், குறியாக்கம் (encryption) மற்றும் VAPID அங்கீகாரத்தைக் கையாள ஒரு library-ஐப் பயன்படுத்துகிறீர்கள். உங்கள் server தரவுத்தளத்திலிருந்து சந்தாவை (subscription) படித்து, payload-ஐ குறியாக்கம் செய்து, உலாவியின் push service-க்கு அனுப்புகிறது.

தயாரிப்பு நிலைக்கு விரிவாக்குதல் (Scaling for Production)

சிறிய திட்டங்களுக்கு ஒரு எளிய அமைப்பு போதுமானது. ஒரு பெரிய அமைப்பு கூடுதல் வசதிகளைத் தேவைப்படும்.

  • பல சாதனங்களைக் கையாளுதல்: ஒரு பயனர் ஒரு தொலைபேசி மற்றும் ஒரு மடிக்கணினியைக் கொண்டிருக்கலாம். ஒரு பயனருக்குப் பல சந்தாக்களைச் சேமிக்கவும்.
  • தரவைச் சுத்தப்படுத்துதல்: சந்தாக்கள் காலாவதியாகும். உங்களுக்கு 404 அல்லது 410 பிழை (error) கிடைத்தால், அந்தச் சந்தாவை உங்கள் தரவுத்தளத்திலிருந்து நீக்கவும்.
  • Queues-ஐப் பயன்படுத்துதல்: மில்லியன் கணக்கான பயனர்களுக்கு, Kafka அல்லது அது போன்ற ஒரு கருவியைப் பயன்படுத்தவும். இது உங்கள் அமைப்பு அறிவிப்புகளை ஒத்திசைவற்ற முறையில் (asynchronously) செயலாக்க அனுமதிக்கிறது.
  • மீண்டும் முயற்சிகளைச் செயல்படுத்துதல் (Implement retries): நெட்வொர்க் தோல்விகளைக் கையாள exponential backoff முறையைப் பயன்படுத்தவும்.

பயனர் செயல்பாட்டில் இருக்கும்போது நேரலை அரட்டைகளுக்கு (live chats) WebSockets சிறந்தது. Tab மூடப்பட்டிருக்கும் போது பயனர்களைத் தொடர்பு கொள்ள Web Push சிறந்தது.

மூலம்: https://dev.to/chandu_bobbili_06/how-web-push-notifications-work-internally-implementing-with-react-golang-6m