वेब पुश से जुड़ी कोई समस्या होने पर, उसे डीबग करना या मदद पाना मुश्किल हो सकता है. इस दस्तावेज़ में, कुछ सामान्य समस्याओं के बारे में बताया गया है. साथ ही, यह भी बताया गया है कि अगर आपको 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
में 'मैसेज पाने का लॉग' (sic) देखकर यह पता लगाया जा सकता है कि ब्राउज़र को मैसेज मिल रहे हैं या नहीं.
अगर आपको मैसेज समय पर नहीं दिख रहा है, तो पक्का करें कि आपके ब्राउज़र का कनेक्शन स्टेटस CONNECTED
हो:
अगर यह 'कनेक्टेड' के तौर पर नहीं दिख रहा है, तो आपको अपनी मौजूदा प्रोफ़ाइल मिटानी पड़ सकती है और नई प्रोफ़ाइल बनानी पड़ सकती है. अगर इससे भी समस्या ठीक नहीं होती है, तो कृपया गड़बड़ी की शिकायत करें. इसके लिए, यहां दिया गया तरीका अपनाएं.
गड़बड़ी की रिपोर्ट करना
अगर ऊपर बताए गए तरीकों से आपकी समस्या हल नहीं होती है और आपको यह पता नहीं चल पा रहा है कि समस्या क्या हो सकती है, तो कृपया उस ब्राउज़र के लिए समस्या दर्ज करें जिससे आपको समस्या आ रही है:
Chrome के लिए, समस्या यहां बताएं: https://bugs.chromium.org/p/chromium/issues/list Firefox के लिए, समस्या यहां बताएं: https://bugzilla.mozilla.org/
गड़बड़ी की अच्छी रिपोर्ट देने के लिए, आपको यह जानकारी देनी चाहिए:
- जिन ब्राउज़र में आपने जांच की है (उदाहरण के लिए, Chrome का वर्शन 50, Chrome का वर्शन 51, Firefox का वर्शन 50, Firefox का वर्शन 51).
- समस्या की जानकारी देने वाला
PushSubscription
का उदाहरण. - अनुरोधों के उदाहरण शामिल करें. जैसे, पुश सेवा के लिए नेटवर्क अनुरोधों का कॉन्टेंट, जिसमें हेडर भी शामिल हैं.
- नेटवर्क अनुरोधों के जवाबों के उदाहरण भी शामिल करें.
अगर समस्या का कोई ऐसा उदाहरण दिया जा सकता है जिसे दोहराया जा सकता है, तो समस्या का पता लगाने और उसे हल करने में कम समय लगता है. उदाहरण के लिए, सोर्स कोड या होस्ट की गई वेब साइट.
आगे क्या करना है
- वेब पर पुश नोटिफ़िकेशन की खास जानकारी
- पुश नोटिफ़िकेशन की सुविधा कैसे काम करती है
- किसी उपयोगकर्ता को सदस्यता देना
- अनुमति के लिए यूज़र एक्सपीरियंस
- वेब पुश लाइब्रेरी की मदद से मैसेज भेजना
- वेब पुश प्रोटोकॉल
- पुश इवेंट मैनेज करना
- सूचना दिखाना
- सूचना का व्यवहार
- सूचना के सामान्य पैटर्न
- पुश नोटिफ़िकेशन के बारे में अक्सर पूछे जाने वाले सवाल
- आम समस्याएं और गड़बड़ियों की शिकायत करना