सामान्य समस्याएं और रिपोर्टिंग बग

जब आपको वेब पुश से जुड़ी कोई समस्या मिलती है, तो उस समस्या को डीबग करना मुश्किल हो सकता है या मदद मिल सकती है. इस दस्तावेज़ में कुछ सामान्य समस्याओं के बारे में बताया गया है. साथ ही, यह भी बताया गया है कि आपको किन समस्याओं को ध्यान में रखना चाहिए Chrome या Firefox में कोई बग मिलता है, तो आपको यह टूल कैसे मिलेगा.

इससे पहले कि हम डीबग करने की प्रोसेस शुरू करें, शायद आपको डीबग करने में समस्या आ रही हो सेवा कर्मचारी खुद, फ़ाइल अपडेट नहीं हो रही है, रजिस्टर नहीं हो पा रहा है या आम तौर पर असामान्य व्यवहार. कई सर्विस वर्कर को डीबग करने से जुड़ा शानदार दस्तावेज़ हमारा सुझाव है कि अगर आपने इससे पहले सर्विस वर्कर डेवलपमेंट.

वेब पुश नोटिफ़िकेशन को डेवलप और टेस्ट करते समय दो अलग-अलग स्टेज होते हैं, जिनकी जांच करना ज़रूरी है. जिनके पास सामान्य समस्याओं / समस्याओं का एक सेट है:

अगर आपको पुश मैसेज और उनसे जुड़े सेक्शन नहीं मिल रहे हैं, तो इस दस्तावेज़ में समस्या को डीबग करने में सहायता नहीं कर रहे हैं तो हो सकता है कि आपको पुश मैकेनिज़्म में बग के बारे में बताता है. इस मामले में, यह देखें गड़बड़ी की रिपोर्ट को बेहतर बनाना सेक्शन में जाकर, गड़बड़ी की एक अच्छी रिपोर्ट फ़ाइल करें. इसमें ऐसी सभी ज़रूरी जानकारी दी गई है जिन्हें जल्द से जल्द प्रोसेस करने के लिए में गड़बड़ी ठीक करने की शुरुआत कर दी है.

शुरू करने से पहले मैं आपको यह बताना चाहूँगी कि 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 समस्याएं.

आपको गड़बड़ी का Unauthorized जवाब भी मिलेगा अगर आपके पुश में Authorization हेडर शामिल नहीं है, तो Mozilla AutoPush अनुरोध.

{
  "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 से निम्न गड़बड़ी मिलेगी ऑटोपुश:

{
  "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`.
413 पेलोड का साइज़ बहुत बड़ा है. पुश सेवा के लिए पेलोड का कम से कम साइज़ 4096 बाइट (या 4kb) की सहायता उपलब्ध है. साइज़ बड़ा करने से यह गड़बड़ी हो सकती है.

अगर इस सूची में एचटीटीपी स्टेटस कोड नहीं है और गड़बड़ी का मैसेज नहीं है तो वेब पुश प्रोटोकॉल की जांच करें" स्पेसिफ़िकेशन के ज़रिए, यह देखा जा सकता है कि स्टेटस कोड का संदर्भ यह बताने के लिए दिया जाता है कि स्टेटस कोड कब इस्तेमाल नहीं किया जा सकता.

पेलोड एन्क्रिप्ट (सुरक्षित) करने से जुड़ी समस्या

क्या पुश मैसेज (जैसे, किसी वेब पर मैसेज भेजना) को ट्रिगर किया जा सकता है पुश सर्विस और 201 रिस्पॉन्स कोड पाएं) लेकिन पुश इवेंट कभी भी फ़ायर नहीं होता है आपका सर्विस वर्कर, सामान्य रूप से दिखाता है कि ब्राउज़र उसे मिलने वाले मैसेज को डिक्रिप्ट करें.

अगर ऐसा है, तो आपको Firefox के DevTools में गड़बड़ी का मैसेज दिखेगा ठीक है:

डिक्रिप्शन मैसेज वाला Firefox DevTools.

यह देखने के लिए कि Chrome में यह समस्या है या नहीं, नीचे दिया गया तरीका अपनाएं:

  1. about://gcm-internals पर जाएं और "रिकॉर्डिंग शुरू करें" पर क्लिक करें बटन.

Chrome GCM का आंतरिक रिकॉर्ड.

  1. पुश मैसेज ट्रिगर करें और "मैसेज डिक्रिप्ट करने का फ़ेलियर लॉग" देखें.

GCM का आंतरिक डिक्रिप्शन लॉग.

अगर पेलोड के डिक्रिप्शन में कोई समस्या है, तो आपको गड़बड़ी का मैसेज दिखेगा जैसा ऊपर बताया गया है. (AES-GCM decryption failed पर ध्यान दें मैसेज देखें.)

अगर आपकी समस्या है, तो कुछ ऐसे टूल हैं जो एन्क्रिप्शन को डीबग करने में आपकी मदद कर सकते हैं:

कनेक्शन की समस्या

अगर आपको अपने सर्विस वर्कर में कोई पुश इवेंट नहीं मिल रहा है और आपको तो ब्राउज़र उससे कनेक्ट करने में विफल हो सकता है पुश सेवा का इस्तेमाल किया जाता है.

Chrome में, ऐप्लिकेशन की जांच करके यह पता लगाया जा सकता है कि ब्राउज़र को मैसेज मिल रहे हैं या नहीं 'मैसेज लॉग पाएं' about://gcm-internals में (sic).

GCM के अंदरूनी हिस्सों को मैसेज लॉग मिलता है.

अगर आपको मैसेज सही समय पर नहीं दिखता, तो पक्का करें कि आपके ब्राउज़र की कनेक्शन स्थिति CONNECTED है:

GCM की आंतरिक कनेक्शन स्थिति.

अगर वह 'कनेक्ट नहीं है' नहीं है, तो आपको अपनी मौजूदा प्रोफ़ाइल मिटानी होगी और नया बनाएं. अगर ऐसा है, तो अब भी समस्या का समाधान नहीं हुआ है, तो कृपया नीचे दिए गए सुझाव के हिसाब से गड़बड़ी की रिपोर्ट सबमिट करें.

गड़बड़ी की रिपोर्ट ठीक की जा रही हैं

अगर ऊपर दिए गए किसी भी तरीके से आपकी समस्या हल नहीं होती है और आपको इस बारे में कोई जानकारी नहीं है कि समस्या हो सकती है, तो कृपया उस ब्राउज़र के ख़िलाफ़ समस्या दर्ज करें जिसमें आपके पास इससे जुड़ी समस्या:

Chrome के लिए, आपको यहां समस्या बतानी है: https://bugs.chromium.org/p/chromium/issues/list Firefox के लिए, आपको यह समस्या यहां उठानी चाहिए: https://bugzilla.mozilla.org/

एक अच्छी गड़बड़ी की रिपोर्ट देने के लिए, आपको नीचे दी गई जानकारी देनी होगी:

  • वे ब्राउज़र जिन पर आपने परीक्षण किया है (उदा. Chrome वर्शन 50, Chrome वर्शन 51, Firefox वर्शन 50, Firefox के 51 वर्शन).
  • PushSubscription का उदाहरण, जो समस्या को दिखाता है.
  • उदाहरण के तौर पर किसी भी अनुरोध को शामिल करें (जैसे, पुश के लिए किए गए नेटवर्क अनुरोधों का कॉन्टेंट सेवा, जिसमें हेडर भी शामिल हैं).
  • उदाहरण के तौर पर, नेटवर्क के अनुरोधों से मिले जवाब भी शामिल करें.

अगर आप फिर से जनरेट किया जा सकने वाला उदाहरण दे सकते हैं, तो सोर्स कोड या होस्ट किया गया वेब तो समस्या का पता लगाकर उसे हल किया जा सकता है.

आगे कहां जाना है

कोड लैब