एक्सटेंशन में रीयल-टाइम अपडेट

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

  • Web Push या Push API, एक ऐसा वेब स्टैंडर्ड है जो आपको किसी भी Push कंपनी या अपने वेब सर्वर से भी Chrome एक्सटेंशन में मैसेज भेजने और पाने की सुविधा देता है.
  • chrome.gcm एक लेगसी एक्सटेंशन खास एपीआई है, जो आपको Firebase क्लाउड से मैसेज का इस्तेमाल करके मैसेज भेजने और पाने की सुविधा देता है.
  • WebSockets एक लो-लेवल प्रोटोकॉल है. इसकी मदद से, अपने Chrome एक्सटेंशन और सर्वर के बीच दोतरफ़ा कनेक्शन खोला जा सकता है.

आम तौर पर सामने आने वाली स्थितियां

यहां Chrome एक्सटेंशन के कुछ सामान्य उदाहरण दिए गए हैं, जिनमें रीयल-टाइम कम्यूनिकेशन ज़रूरी होता है:

उपयोगकर्ताओं को बदलावों के बारे में अप-टू-डेट रखें.

अगर आप एक से ज़्यादा उपयोगकर्ताओं के बीच फ़ाइलें, सेटिंग या जानकारी के अन्य हिस्से सिंक कर रहे हैं, तो आपके एक्सटेंशन को साइलेंट अपडेट भेजने के लिए Web पुश एक बेहतरीन तरीका है, ताकि उसे सर्वर से स्थिति अपडेट करने के बारे में पता चल सके.

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

उपयोगकर्ताओं को सूचनाएं भेजना.

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

उपयोगकर्ताओं के किसी एक सबसेट को मैसेज भेजने के लिए, पुश सबसे अच्छा विकल्प है. Firebase क्लाउड से मैसेज, Topics (जिन्हें चैनल भी कहा जाता है) ऑफ़र करता है. यह सिर्फ़ एचटीटीपी Cloud Messaging API में उपलब्ध है. यह वर्शन, chrome.gcm के इस्तेमाल किए जाने वाले लेगसी वर्शन से अलग है. अगर आपको Chrome के लेगसी वर्शन (Chrome 121 से पहले के वर्शन) के साथ-साथ सभी उपयोगकर्ताओं को ब्रॉडकास्ट मैसेज भेजने हैं, तो chrome.gcm सबसे अच्छा विकल्प है. लेगसी Firebase मैसेजिंग एपीआई पर बनाया गया chrome.gcm एक दशक से ज़्यादा समय से Chrome पर काम कर रहा है.

उपयोगकर्ताओं के खाते में कोई अहम गतिविधि होने पर, उन्हें सूचनाएं भेजने के लिए वेब पुश या chrome.gcm का इस्तेमाल किया जा सकता है. जैसे, नया मैसेज मिलने या फ़ाइल शेयर किए जाने पर.

फटाफट मैसेज सेवा

अक्सर, दो-तरफ़ा बातचीत की ज़रूरत है? ऐसी स्थिति में वेब सॉकेट आपके लिए सबसे अच्छा विकल्प हो सकता है. यह आपके एक्सटेंशन और आपके सर्वर (या सीधे अन्य उपयोगकर्ताओं के लिए भी) के बीच एक द्विदिशात्मक कनेक्शन खोलता है. यह आपको रीयल टाइम में डेटा और मैसेज भेजने की सुविधा देता है. आम तौर पर, ये वेब पर एक बेहतरीन विकल्प हैं. हालांकि, एक्सटेंशन की कुछ सीमाएं हैं, लेकिन अगर आपको उनका इस्तेमाल करना है, तो आपको इनका ध्यान रखना होगा.

इस गाइड के बाकी हिस्से में, हम उपलब्ध विकल्पों के बारे में बारीकी से जानेंगे.

Push API की मदद से पुश नोटिफ़िकेशन

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

chrome.gcm के साथ पुश नोटिफ़िकेशन

chrome.gcm API, Firebase क्लाउड मैसेज सेवा (FCM) का सीधा कनेक्शन उपलब्ध कराता है. यह सेवा, वेब ऐप्लिकेशन और मोबाइल ऐप्लिकेशन को रीयल-टाइम अपडेट भेजने के लिए इस्तेमाल की जाती है. यह Chrome के लिए एक खास एक्सटेंशन एपीआई है, जिसे ब्राउज़र में Push के उपलब्ध होने से कई साल पहले जोड़ा गया था. इसे Firebase के लेगसी एचटीटीपी एपीआई का इस्तेमाल करके बनाया गया था. यह एपीआई अब काम नहीं करता. हालांकि, उन एपीआई का इस्तेमाल कहीं और नहीं किया जाता है, लेकिन एक्सटेंशन में उन्हें नहीं बनाया जाता है. वे आने वाले समय में भी काम करते रहेंगे. हालांकि, लेगसी पुश बैकएंड की वजह से, इसमें Topics जैसी सुविधाएं नहीं हैं.

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

WebSockets से रीयल-टाइम मैसेज

पिछले एक दशक से भी ज़्यादा समय से, WebSockets, वेब पर रीयल टाइम में मैसेज भेजने का अहम हिस्सा रहा है. ये वेब पर रीयल टाइम इवेंट के लिए, एक बेहतरीन विकल्प है जिससे दो पक्षों तक बातचीत जारी रहती है. WebSockets अलग-अलग तरह के एक्सटेंशन कॉम्पोनेंट में काम करता है. जैसे, कॉन्टेंट स्क्रिप्ट, पॉपअप, साइडपैनल, और बैकग्राउंड सर्विस वर्कर. आम तौर पर, ये एक्सटेंशन वेब पर एक बेहतरीन विकल्प हैं. हालांकि, एक्सटेंशन की कुछ सीमाएं हैं जिन्हें आपको ध्यान में रखना चाहिए, ताकि आप उनका इस्तेमाल कर सकें.

पुश नोटिफ़िकेशन के लिए सही नहीं है

WebSocket, chrome.gcm जैसे एक्सटेंशन प्लैटफ़ॉर्म एपीआई का इस्तेमाल करने के बजाय, वेब प्लैटफ़ॉर्म में चलता है. इसलिए, आपके एक्सटेंशन के बाहर Websocket कनेक्शन शुरू होने पर, Chrome आपके एक्सटेंशन को चालू नहीं कर सकता.

सिर्फ़ चालू कनेक्शन

Chrome, 30 सेकंड के बाद इस्तेमाल नहीं किए जा रहे एक्सटेंशन को निलंबित कर देता है. Chrome में कई तरह के अनुभव के आधार पर यह तय किया जाता है कि एक्सटेंशन "इस्तेमाल किया जा रहा है" या नहीं. इनमें से एक ऐक्टिव WebSocket कनेक्शन है या नहीं. Chrome ऐसे एक्सटेंशन को निलंबित नहीं करेगा जिसे पिछले 30 सेकंड में WebSocket मैसेज भेजा गया हो या मिला हो. अगर आपके एक्सटेंशन में WebSockets का इस्तेमाल किया जा रहा है और आपको यह पक्का करना है कि इसे समय से पहले बंद न किया गया हो, तो कनेक्शन बनाए रखने के लिए दिलचस्प मैसेज भेजें. इसमें सर्वर को समय-समय पर संदेश भेजना शामिल है, जिससे उसे और Chrome दोनों को पता चल जाता है कि आप अभी भी सक्रिय हैं. किसी websocket को हमेशा के लिए सेव रखने के तरीके का एक उदाहरण, हमारे WebSocket दस्तावेज़ में दिया गया है.