वेब पुश में कोई समस्या आने पर, उसे डीबग करना या मदद पाना मुश्किल हो सकता है. इस दस्तावेज़ में कुछ आम समस्याओं के बारे में बताया गया है. साथ ही, यह भी बताया गया है कि 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 | हो गया. सदस्यता अब मान्य नहीं है और इसे आपके बैक एंड से हटा दिया जाना चाहिए. `पुशसदस्यता` पर `सदस्यता छोड़ें()` को कॉल करके, इसे फिर से जनरेट किया जा सकता है. |
413 | पेलोड का साइज़ बहुत बड़ा है. किसी पुश सेवा के लिए काम करने वाला पेलोड कम से कम 4096 बाइट (या 4kb) का होना चाहिए. किसी भी साइज़ को बड़ा करने पर यह गड़बड़ी हो सकती है. |
अगर एचटीटीपी स्टेटस कोड इस सूची में नहीं है और गड़बड़ी का मैसेज काम का नहीं है, तो वेब पुश प्रोटोकॉल की खास जानकारी देखें. इससे यह पता चलेगा कि स्टेटस कोड का रेफ़रंस दिया गया है या नहीं. साथ ही, यह भी देखें कि स्टेटस कोड का इस्तेमाल कब किया जा सकता है.
पेलोड एन्क्रिप्ट (सुरक्षित) करने के तरीके की समस्या
अगर आपने किसी पुश मैसेज (जैसे कि वेब पुश सेवा को मैसेज भेजना और 201 रिस्पॉन्स कोड पाना) को सही तरीके से ट्रिगर किया है, लेकिन पुश इवेंट कभी भी आपके सर्विस वर्कर में सक्रिय नहीं होता है, तो आम तौर पर इससे पता चलता है कि ब्राउज़र, मैसेज को डिक्रिप्ट नहीं कर पाया.
अगर ऐसा है, तो आपको Firefox के DevTools कंसोल में गड़बड़ी का एक मैसेज दिखेगा. ऐसा कुछ इस तरह है:
Chrome में यह समस्या है या नहीं, इसका पता लगाने के लिए, यह तरीका अपनाएं:
- about://gcm-internals पर जाएं और "रिकॉर्डिंग शुरू करें" बटन पर क्लिक करें.
- कोई पुश मैसेज ट्रिगर करें और "मैसेज डिक्रिप्शन फ़ेलियर लॉग" में देखें.
अगर पेलोड को डिक्रिप्ट करने में कोई समस्या आती है, तो आपको ऊपर दिखाई गई गड़बड़ी जैसी गड़बड़ी दिखेगी. (जानकारी वाले कॉलम में AES-GCM decryption failed
मैसेज देखें.)
अगर आपकी समस्या यह है, तो यहां कुछ टूल दिए गए हैं जो एन्क्रिप्शन को डीबग करने में मदद कर सकते हैं:
- पीटर बेवरलू का बनाया हुआ पुश एन्क्रिप्शन पुष्टि करने वाला टूल.
- वेब पुश: Mozilla का डेटा एन्क्रिप्शन टेस्ट पेज
कनेक्शन की समस्या
अगर आपको अपने सर्विस वर्कर में कोई पुश इवेंट नहीं मिल रहा है और डिक्रिप्शन से जुड़ी कोई गड़बड़ी नहीं दिख रही है, तो हो सकता है कि ब्राउज़र किसी पुश सेवा से कनेक्ट नहीं कर पा रहा हो.
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
का उदाहरण, जो समस्या के बारे में बताता है.- अनुरोधों के उदाहरण शामिल करें (जैसे, किसी पुश सेवा के लिए नेटवर्क अनुरोधों का कॉन्टेंट, जिसमें हेडर भी शामिल हैं).
- नेटवर्क अनुरोधों से मिले जवाबों के उदाहरण भी शामिल करें.
अगर फिर से जनरेट किया जा सकने वाला उदाहरण दिया जा सकता है, चाहे सोर्स कोड हो या होस्ट की गई वेब साइट, तो इससे अक्सर समस्या का पता लगाने और उसे हल करने में तेज़ी आती है.
आगे कहां जाना है
- वेब पुश नोटिफ़िकेशन के बारे में खास जानकारी
- पुश कैसे काम करता है
- किसी उपयोगकर्ता की सदस्यता लेना
- अनुमति के लिए उपयोगकर्ता अनुभव
- वेब पुश लाइब्रेरी से मैसेज भेजना
- वेब पुश प्रोटोकॉल
- पुश इवेंट को मैनेज करना
- सूचना दिखाना
- सूचना का व्यवहार
- सूचना के सामान्य पैटर्न
- पुश नोटिफ़िकेशन के बारे में अक्सर पूछे जाने वाले सवाल
- सामान्य समस्याएं और गड़बड़ियों की रिपोर्ट करना