ਵੈੱਬ ਪੁਸ਼ ਨੋਟੀਫਿਕੇਸ਼ਨਾਂ ਅੰਦਰੂਨੀ ਤੌਰ 'ਤੇ ਕਿਵੇਂ ਕੰਮ ਕਰਦੀਆਂ ਹਨ

ਤੁਸੀਂ ਨਵੇਂ ਸੁਨੇਹਿਆਂ, ਆਰਡਰ ਅਪਡੇਟਾਂ, ਜਾਂ ਭੁਗਤਾਨ ਦੀਆਂ ਯਾਦਾਂ (reminders) ਲਈ ਨੋਟੀਫਿਕੇਸ਼ਨ ਦੇਖਦੇ ਹੋ।

ਇਹ ਸਧਾਰਨ ਲੱਗਦਾ ਹੈ। ਤੁਹਾਡਾ ਬੈਕਐਂਡ ਇੱਕ ਸੁਨੇਹਾ ਭੇਜਦਾ ਹੈ ਅਤੇ ਉਪਭੋਗਤਾ ਇਸਨੂੰ ਪ੍ਰਾਪਤ ਕਰਦਾ ਹੈ।

ਅਸਲ ਵਿੱਚ, ਇਸ ਪ੍ਰਕਿਰਿਆ ਵਿੱਚ ਕਈ ਹਿੱਸੇ ਸ਼ਾਮਲ ਹੁੰਦੇ ਹਨ। ਤੁਹਾਡਾ ਬੈਕਐਂਡ ਕਦੇ ਵੀ ਸਿੱਧਾ ਬ੍ਰਾਊਜ਼ਰ ਨਾਲ ਗੱਲ ਨਹੀਂ ਕਰਦਾ। ਇਸ ਦੀ ਬਜਾਏ, ਇਹ ਇੱਕ 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: ਇੱਕ ਬੈਕਗ੍ਰਾਊਂਡ ਸਕ੍ਰਿਪਟ ਜੋ ਬ੍ਰਾਊਜ਼ਰ ਵਿੱਚ ਰਹਿੰਦੀ ਹੈ। ਇਹ ਉਦੋਂ ਵੀ ਇਵੈਂਟਸ (events) ਨੂੰ ਸੰਭਾਲਦੀ ਹੈ ਜਦੋਂ ਤੁਹਾਡੀ ਵੈੱਬਸਾਈਟ ਬੰਦ ਹੁੰਦੀ ਹੈ।
  3. Backend (Golang): ਸਬਸਕ੍ਰਿਪਸ਼ਨਾਂ ਨੂੰ ਸਟੋਰ ਕਰਦਾ ਹੈ ਅਤੇ ਐਨਕ੍ਰਿਪਟਡ (encrypted) ਸੁਨੇਹੇ ਭੇਜਦਾ ਹੈ।
  4. Push Service: ਵਿਚੋਲਾ ਜੋ ਬ੍ਰਾਊਜ਼ਰ ਤੱਕ ਸੁਨੇਹਾ ਪਹੁੰਚਾਉਂਦਾ ਹੈ।

The Subscription Flow

ਸੁਨੇਹਾ ਭੇਜਣ ਲਈ, ਤੁਹਾਨੂੰ ਇੱਕ ਸਬਸਕ੍ਰਿਪਸ਼ਨ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ।

  • ਉਪਭੋਗਤਾ ਇਜਾਜ਼ਤ ਦਿੰਦਾ ਹੈ।
  • ਬ੍ਰਾਊਜ਼ਰ ਇੱਕ ਸਬਸਕ੍ਰਿਪਸ਼ਨ ਆਬਜੈਕਟ ਬਣਾਉਂਦਾ ਹੈ ਜਿਸ ਵਿੱਚ ਇੱਕ endpoint ਅਤੇ ਸੁਰੱਖਿਆ ਚਾਬੀਆਂ (security keys) ਹੁੰਦੀਆਂ ਹਨ।
  • ਤੁਹਾਡੀ React ਐਪ ਇਸ ਆਬਜੈਕਟ ਨੂੰ ਤੁਹਾਡੇ Golang ਬੈਕਐਂਡ ਨੂੰ ਭੇਜਦੀ ਹੈ।
  • ਤੁਹਾਡਾ ਬੈਕਐਂਡ ਇਸਨੂੰ ਡਾਟਾਬੇਸ ਵਿੱਚ ਸੇਵ ਕਰਦਾ ਹੈ।

ਤੁਹਾਨੂੰ ਆਪਣੇ ਸਰਵਰ ਦੀ ਪਛਾਣ ਕਰਨ ਲਈ VAPID ਚਾਬੀਆਂ ਦੀ ਵਰਤੋਂ ਕਰਨੀ ਚਾਹੀਦੀ ਹੈ। ਫਰੰਟਐਂਡ ਲਈ ਪਬਲਿਕ ਕੀ (public key) ਅਤੇ ਬੈਕਐਂਡ ਲਈ ਪ੍ਰਾਈਵੇਟ ਕੀ (private key) ਦੀ ਵਰਤੋਂ ਕਰੋ। ਆਪਣੀ ਪ੍ਰਾਈਵੇਟ ਕੀ ਕਦੇ ਵੀ ਸਾਂਝੀ ਨਾ ਕਰੋ।

The Implementation

React ਵਿੱਚ, ਤੁਸੀਂ ਪੁਸ਼ ਇਵੈਂਟਸ (push events) ਨੂੰ ਸੁਣਨ ਲਈ ਇੱਕ Service Worker ਨੂੰ ਰਜਿਸਟਰ ਕਰਦੇ ਹੋ। ਇਹ ਵਰਕਰ ਬੈਕਗ੍ਰਾਊਂਡ ਵਿੱਚ ਚੱਲਦਾ ਹੈ। ਇਹ ਡਾਟਾ ਪ੍ਰਾਪਤ ਕਰਦਾ ਹੈ ਅਤੇ ਉਪਭੋਗਤਾ ਨੂੰ ਨੋਟੀਫਿਕੇਸ਼ਨ ਦਿਖਾਉਂਦਾ ਹੈ।

Golang ਵਿੱਚ, ਤੁਸੀਂ ਐਨਕ੍ਰਿਪਸ਼ਨ ਅਤੇ VAPID ਪ੍ਰਮਾਣਿਕਤਾ (authentication) ਨੂੰ ਸੰਭਾਲਣ ਲਈ ਇੱਕ ਲਾਇਬ੍ਰੇਰੀ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋ। ਤੁਹਾਡਾ ਸਰਵਰ ਡਾਟਾਬੇਸ ਤੋਂ ਸਬਸਕ੍ਰਿਪਸ਼ਨ ਪੜ੍ਹਦਾ ਹੈ, ਪੇਲੋਡ (payload) ਨੂੰ ਐਨਕ੍ਰਿਪਟ ਕਰਦਾ ਹੈ, ਅਤੇ ਇਸਨੂੰ ਬ੍ਰਾਊਜ਼ਰ ਪੁਸ਼ ਸਰਵਿਸ ਨੂੰ ਭੇਜਦਾ ਹੈ।

Scaling for Production

ਛੋਟੇ ਪ੍ਰੋਜੈਕਟਾਂ ਲਈ ਇੱਕ ਸਧਾਰਨ ਸੈੱਟਅੱਪ ਕੰਮ ਕਰਦਾ ਹੈ। ਇੱਕ ਵੱਡੇ ਸਿਸਟਮ ਨੂੰ ਹੋਰ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ।

  • ਕਈ ਡਿਵਾਈਸਾਂ ਨੂੰ ਸੰਭਾਲੋ: ਇੱਕ ਉਪਭੋਗਤਾ ਕੋਲ ਫ਼ੋਨ ਅਤੇ ਲੈਪਟਾਪ ਹੋ ਸਕਦਾ ਹੈ। ਪ੍ਰਤੀ ਉਪਭੋਗਤਾ ਕਈ ਸਬਸਕ੍ਰਿਪਸ਼ਨਾਂ ਸਟੋਰ ਕਰੋ।
  • ਡਾਟਾ ਸਾਫ਼ ਕਰੋ: ਸਬਸਕ੍ਰਿਪਸ਼ਨਾਂ ਦੀ ਮਿਆਦ ਖਤਮ ਹੋ ਜਾਂਦੀ ਹੈ। ਜੇਕਰ ਤੁਹਾਨੂੰ 404 ਜਾਂ 410 ਐਰਰ ਮਿਲਦਾ ਹੈ, ਤਾਂ ਉਸ ਸਬਸਕ੍ਰਿਪਸ਼ਨ ਨੂੰ ਆਪਣੇ