वेब पुश से जुड़ी कोई समस्या होने पर, उसे डीबग करना या मदद पाना मुश्किल हो सकता है. इस दस्तावेज़ में, कुछ सामान्य समस्याओं के बारे में बताया गया है. साथ ही, यह भी बताया गया है कि अगर आपको Chrome या Firefox में कोई गड़बड़ी मिलती है, तो आपको क्या करना चाहिए.
पुश को डीबग करने से पहले, हो सकता है कि आपको सेवा वर्कर को डीबग करने में समस्याएं आ रही हों. जैसे, फ़ाइल अपडेट न होना, रजिस्ट्रेशन न हो पाना या आम तौर पर, सामान्य से अलग व्यवहार. अगर आपने अब तक सेवा वर्कर डेवलप नहीं किया है, तो हमारा सुझाव है कि आप सेवा वर्कर को डीबग करने के बारे में बेहतरीन दस्तावेज़ पढ़ें.
वेब पुश को डेवलप करते समय और उसकी जांच करते समय, दो अलग-अलग स्टेज की जांच की जाती है. हर चरण में सामान्य समस्याओं / समस्याओं का अपना सेट होता है:
- मैसेज भेजना: पक्का करें कि मैसेज भेजने की सुविधा काम कर रही हो.
आपको 201 एचटीटीपी कोड मिलना चाहिए. अगर ऐसा नहीं है :
- अनुमति से जुड़ी गड़बड़ियां देखें: अगर आपको अनुमति से जुड़ी गड़बड़ी का मैसेज मिलता है, तो अनुमति से जुड़ी समस्याओं वाला सेक्शन देखें.
- एपीआई से जुड़ी अन्य गड़बड़ियां: अगर आपको 201 के अलावा कोई दूसरा स्टेटस कोड मिलता है, तो समस्या की वजह जानने के लिए एचटीटीपी स्टेटस कोड सेक्शन देखें.
- मैसेज मिलना: अगर मैसेज भेजने में कोई समस्या आ रही है, लेकिन
ब्राउज़र पर मैसेज नहीं मिला है, तो:
- एन्क्रिप्शन से जुड़ी समस्याएं देखें: पेलोड एन्क्रिप्शन से जुड़ी समस्याओं का सेक्शन देखें.
- कनेक्शन से जुड़ी समस्याओं की जांच करना: अगर समस्या Chrome में है, तो हो सकता है कि वह कनेक्शन से जुड़ी हो. ज़्यादा जानकारी के लिए, कनेक्शन से जुड़ी समस्याओं वाला सेक्शन देखें.
अगर आपको पुश मैसेज भेजने और पाने में समस्या आ रही है और इस दस्तावेज़ के काम के सेक्शन से समस्या को डीबग करने में मदद नहीं मिल रही है, तो हो सकता है कि पुश मैसेज भेजने और पाने की सुविधा में कोई गड़बड़ी हो. इस मामले में, गड़बड़ी की रिपोर्ट करना सेक्शन देखें. इससे आपको गड़बड़ी की अच्छी रिपोर्ट सबमिट करने में मदद मिलेगी. इसमें गड़बड़ी को ठीक करने की प्रोसेस को तेज़ करने के लिए, ज़रूरी जानकारी शामिल होनी चाहिए.
शुरू करने से पहले, मुझे एक बात बतानी है कि Firefox और Mozilla AutoPush Service में गड़बड़ी के बारे में बेहतरीन मैसेज मिलते हैं. अगर आपको कोई समस्या आती है और आपको पता नहीं है कि समस्या क्या है, तो Firefox में जांच करें और देखें कि क्या आपको गड़बड़ी का कोई ज़्यादा मददगार मैसेज मिलता है.
अनुमति से जुड़ी समस्याएं
वेब पुश का इस्तेमाल शुरू करते समय, अनुमति से जुड़ी समस्याएं डेवलपर को अक्सर आती हैं. आम तौर पर, यह समस्या किसी साइट की ऐप्लिकेशन सर्वर कुंजियों (जिन्हें VAPID कुंजियां भी कहा जाता है) के कॉन्फ़िगरेशन से जुड़ी होती है .
Firefox और Chrome, दोनों में पुश नोटिफ़िकेशन की सुविधा इस्तेमाल करने का सबसे आसान तरीका यह है कि subscribe()
कॉल में applicationServerKey
सबमिट करें. इसकी कमी यह है कि
आपके फ़्रंट एंड और सर्वर की कुंजियों के बीच किसी भी अंतर की वजह से, अनुमति से जुड़ी गड़बड़ी हो सकती है.
Chrome और FCM पर
Chrome, पुश सेवा के तौर पर FCM का इस्तेमाल करता है. इसलिए, आपको कई तरह की गड़बड़ियों के लिए, FCM से UnauthorizedRegistration
रिस्पॉन्स मिलेगा. इन सभी गड़बड़ियों में ऐप्लिकेशन सर्वर कुंजियां शामिल हैं.
आपको इनमें से किसी भी स्थिति में UnauthorizedRegistration
गड़बड़ी का मैसेज मिलेगा:
- अगर आप FCM के अनुरोध में
Authorization
हेडर तय नहीं कर पाते हैं. - उपयोगकर्ता को सदस्यता लेने के लिए इस्तेमाल की गई आपकी ऐप्लिकेशन कुंजी, उस कुंजी से मेल नहीं खाती है जो अनुमति देने वाले हेडर पर हस्ताक्षर करने के लिए इस्तेमाल की जाती है.
- आपके JWT में, समयसीमा खत्म होने की जानकारी अमान्य है. इसका मतलब है कि समयसीमा 24 घंटे से ज़्यादा हो गई है या JWT की समयसीमा खत्म हो गई है.
- JWT गलत है या उसमें अमान्य वैल्यू हैं.
गड़बड़ी का पूरा जवाब कुछ ऐसा दिखता है:
<html>
<head>
<title>UnauthorizedRegistration</title>
</head>
<body bgcolor="#FFFFFF" text="#000000">
<h1>UnauthorizedRegistration</h1>
<h2>Error 400</h2>
</body>
</html>
अगर आपको Chrome में गड़बड़ी का यह मैसेज मिलता है, तो Firefox में जांच करें. इससे आपको पता चलेगा कि क्या इससे समस्या के बारे में ज़्यादा जानकारी मिलती है.
Firefox और Mozilla AutoPush
Firefox और Mozilla AutoPush, Authorization
से जुड़ी समस्याओं के लिए, गड़बड़ी के मैसेज का एक आसान सेट उपलब्ध कराते हैं.
अगर आपके पुश अनुरोध में Authorization
हेडर शामिल नहीं है, तो आपको Mozilla AutoPush से Unauthorized
गड़बड़ी का जवाब भी मिलेगा.
{
"errno": 109,
"message": "Request did not validate missing authorization header",
"code": 401,
"more_info": "http://autopush.readthedocs.io/en/latest/http.html#error-codes",
"error": "Unauthorized"
}
अगर आपके JWT की समयसीमा खत्म हो गई है, तो आपको Unauthorized
गड़बड़ी का एक मैसेज भी मिलेगा. इसमें बताया जाएगा कि टोकन की समयसीमा खत्म हो गई है.
{
"code": 401,
"errno": 109,
"error": "Unauthorized",
"more_info": "http://autopush.readthedocs.io/en/latest/http.html#error-codes",
"message": "Request did not validate Invalid bearer token: Auth expired"
}
अगर उपयोगकर्ता की सदस्यता लेने और अनुमति वाले हेडर पर हस्ताक्षर करने के समय, ऐप्लिकेशन सर्वर की पासकोड अलग-अलग हैं, तो Not Found
गड़बड़ी का मैसेज दिखेगा:
{
"errno": 102,
"message": "Request did not validate invalid token",
"code": 404,
"more_info": "http://autopush.readthedocs.io/en/latest/http.html#error-codes",
"error": "Not Found"
}
आखिर में, अगर आपके JWT में अमान्य वैल्यू है (उदाहरण के लिए, अगर "alg" वैल्यू कोई अनचाही वैल्यू है), तो आपको Mozilla AutoPush से यह गड़बड़ी दिखेगी:
{
"code": 401,
"errno": 109,
"error": "Unauthorized",
"more_info": "http://autopush.readthedocs.io/en/latest/http.html#error-codes",
"message": "Request did not validate Invalid Authorization Header"
}
एचटीटीपी स्टेटस कोड
कई तरह की समस्याओं की वजह से, पुश सेवा से 201 के अलावा कोई दूसरा रिस्पॉन्स कोड मिल सकता है. यहां एचटीटीपी स्टेटस कोड की सूची दी गई है. साथ ही, यह भी बताया गया है कि वेब पुश से जुड़े इन कोड का क्या मतलब है.
स्थिति कोड | ब्यौरा |
---|---|
429 | बहुत ज़्यादा अनुरोध. आपके ऐप्लिकेशन सर्वर पर, पुश सेवा के लिए तय की गई दर की सीमा पूरी हो गई है. सेवा से मिले रिस्पॉन्स में 'बाद में कोशिश करें' हेडर शामिल होना चाहिए, ताकि यह पता चल सके कि दूसरा अनुरोध करने से कितने समय पहले तक अनुरोध किया जा सकता है. |
400 | अनुरोध अमान्य है. आपका कोई हेडर अमान्य है या उसका फ़ॉर्मैट सही नहीं है. |
404 | नहीं मिला. ऐसे मामले में, आपको अपने बैक एंड से PushSubscription को मिटा देना चाहिए और उपयोगकर्ता के फिर से सदस्यता लेने के मौके की इंतज़ार करना चाहिए. |
410 | नहीं दिख रहा. सदस्यता अब मान्य नहीं है और इसे आपके बैक एंड से हटा दिया जाना चाहिए. इसे फिर से चलाने के लिए, किसी `PushSubscription` पर `unsubscribe()` को कॉल करें. |
413 | पेलोड का साइज़ बहुत बड़ा है. पुश सेवा के लिए, कम से कम 4,096 बाइट (या 4 केबी) का पेलोड होना चाहिए. इससे बड़ी फ़ाइल अपलोड करने पर, यह गड़बड़ी दिख सकती है. |
अगर एचटीटीपी स्टेटस कोड इस सूची में नहीं है और गड़बड़ी का मैसेज मददगार नहीं है, तो वेब पुश प्रोटोकॉल के स्पेसिफ़िकेशन देखें. इससे यह पता चलेगा कि स्टेटस कोड का रेफ़रंस दिया गया है या नहीं. साथ ही, यह भी पता चलेगा कि स्टेटस कोड का इस्तेमाल कब किया जा सकता है.
पेलोड को एन्क्रिप्ट (सुरक्षित) करने से जुड़ी समस्या
अगर आपने पुश मैसेज ट्रिगर कर लिया है (जैसे, किसी वेब पुश सेवा को मैसेज भेजना और 201 रिस्पॉन्स कोड पाना), लेकिन पुश इवेंट कभी भी आपके सर्विस वर्कर में ट्रिगर नहीं होता, तो इसका मतलब है कि ब्राउज़र, भेजे गए मैसेज को डिक्रिप्ट नहीं कर सका.
अगर ऐसा है, तो आपको Firefox के DevTools console में गड़बड़ी का मैसेज दिखेगा. यह मैसेज इस तरह का होगा:
क्या वाकई यही समस्या Chrome में है, यह पता लगाने के लिए यह तरीका अपनाएं:
- about://gcm-internals पर जाएं और "रिकॉर्डिंग शुरू करें" बटन पर क्लिक करें.
- कोई पुश मैसेज ट्रिगर करें और "मैसेज को डिक्रिप्ट न कर पाने से जुड़ी गड़बड़ी का लॉग" देखें.
अगर पेलोड के डिक्रिप्शन में कोई समस्या है, तो आपको ऊपर बताई गई गड़बड़ी से मिलती-जुलती गड़बड़ी दिखेगी. (जानकारी वाले कॉलम में AES-GCM decryption failed
मैसेज पर ध्यान दें.)
अगर आपकी समस्या है, तो कुछ ऐसे टूल हैं जो एन्क्रिप्शन को डीबग करने में आपकी मदद कर सकते हैं:
कनेक्शन की समस्या
अगर आपको अपने सेवा वर्कर में कोई पुश इवेंट नहीं मिल रहा है और आपको डिक्रिप्ट करने से जुड़ी कोई गड़बड़ी नहीं दिख रही है, तो हो सकता है कि ब्राउज़र किसी पुश सेवा से कनेक्ट न हो पा रहा हो.
Chrome में, about://gcm-internals
में 'मैसेज लॉग पाएं' (एसआईसी) की जांच करके, यह पता लगाया जा सकता है कि ब्राउज़र को मैसेज मिल रहे हैं या नहीं.
अगर आपको मैसेज समय पर नहीं दिख रहा है, तो पक्का करें कि आपके ब्राउज़र का कनेक्शन स्टेटस CONNECTED
हो:
अगर यह 'कनेक्टेड' के तौर पर नहीं दिख रहा है, तो आपको अपनी मौजूदा प्रोफ़ाइल मिटानी पड़ सकती है और नई प्रोफ़ाइल बनानी पड़ सकती है. अगर इससे भी समस्या ठीक नहीं होती है, तो कृपया गड़बड़ी की शिकायत करें. इसके लिए, यहां दिया गया तरीका अपनाएं.
गड़बड़ी की रिपोर्ट करना
अगर ऊपर बताए गए तरीकों से आपकी समस्या हल नहीं होती है और आपको पता नहीं चल पा रहा है कि समस्या क्या हो सकती है, तो कृपया उस ब्राउज़र के लिए समस्या दर्ज करें जिससे आपको समस्या आ रही है:
Chrome के लिए, समस्या यहां बताएं: https://bugs.chromium.org/p/chromium/issues/list Firefox के लिए, समस्या यहां बताएं: https://bugzilla.mozilla.org/
गड़बड़ी की अच्छी रिपोर्ट देने के लिए, आपको यह जानकारी देनी चाहिए:
- जिन ब्राउज़र में आपने जांच की है (उदाहरण के लिए, Chrome का वर्शन 50, Chrome का वर्शन 51, Firefox का वर्शन 50, Firefox का वर्शन 51).
- समस्या की जानकारी देने वाला
PushSubscription
का उदाहरण. - अनुरोधों के उदाहरण शामिल करें. जैसे, पुश सेवा के लिए नेटवर्क अनुरोधों का कॉन्टेंट, जिसमें हेडर भी शामिल हैं.
- नेटवर्क अनुरोधों के जवाबों के उदाहरण भी शामिल करें.
अगर सोर्स कोड या होस्ट की गई वेब साइट का कोई उदाहरण दिया जा सकता है, तो समस्या का पता लगाकर उसे हल किया जा सकता है.
आगे क्या करना है
- वेब पर पुश नोटिफ़िकेशन की खास जानकारी
- पुश के काम करने का तरीका
- किसी उपयोगकर्ता को सदस्यता देना
- अनुमति के लिए यूज़र एक्सपीरियंस
- वेब पुश लाइब्रेरी की मदद से मैसेज भेजना
- वेब पुश प्रोटोकॉल
- पुश इवेंट मैनेज करना
- सूचना दिखाना
- सूचना किस तरह की है
- सूचना के सामान्य पैटर्न
- पुश नोटिफ़िकेशन के बारे में अक्सर पूछे जाने वाले सवाल
- सामान्य समस्याएं और गड़बड़ियों की शिकायत करना