किसी ऑर्डर अपडेट के दो उपभोक्ता हो सकते हैं: आपका डेटाबेस और ऑर्डर पेज देख रहा ग्राहक। कनेक्शन टूटने पर दोनों को अलग-अलग तरीके से उबरना होता है।
आपके डेटाबेस को इवेंट का ऐसा रिकॉर्ड चाहिए जिसे दोबारा प्राप्त किया जा सके। ग्राहक के पेज को फिर से कनेक्ट होने के बाद शायद केवल ऑर्डर की नवीनतम स्थिति चाहिए।
चार विकल्प कौन से हैं?
Bird वेबहुक, Realtime, एक डैशबोर्ड इवेंट स्ट्रीम और API रीड देता है, जिन्हें आप पोल कर सकते हैं।
अपने सर्वर पर इवेंट प्राप्त करने के लिए वेबहुक का उपयोग करें। कनेक्टेड क्लाइंट को अपडेट करने के लिए Realtime का उपयोग करें। SSE स्ट्रीम संसाधनों में हुए बदलाव एक डैशबोर्ड सेशन को भेजती है। पोलिंग से आपका एप्लिकेशन तय समय पर संसाधन की स्थिति पढ़ता है।
| तरीका | दिशा | प्रमाणीकरण | कनेक्शन टूटने के बाद रिकवरी |
|---|---|---|---|
| वेबहुक | Bird आपके सर्वर को भेजता है। | आपका रिसीवर अपने एंडपॉइंट सीक्रेट से सिग्नेचर सत्यापित करता है। | विफल डिलीवरी के लिए फिर से प्रयास किया जाता है, फिर उन्हें रीप्ले किया जा सकता है। |
| Realtime | आपका सर्वर कनेक्टेड क्लाइंट्स को प्रकाशित करता है। | क्लाइंट ऐप कुंजी से कनेक्ट होते हैं। प्राइवेट सब्सक्रिप्शन के लिए बैकएंड से अनुमति चाहिए। | दोबारा कनेक्ट होने वाले क्लाइंट्स को स्थिति फिर से बहाल करनी होती है। |
| SSE स्ट्रीम | Bird संसाधनों के बदलाव डैशबोर्ड सत्र को भेजता है। | डैशबोर्ड सत्र कुकी। | स्थिति जानने के लिए संसाधन को फिर से पढ़ें। |
| पोलिंग | आपका एप्लिकेशन Bird से स्थिति माँगता है। | API कुंजी। | बाद में पढ़ने पर संसाधन की स्थिति मिलती है, पर हर बदलाव दोबारा नहीं बनता। |
वेबहुक कब सही विकल्प हैं?
जब आपके सर्वर को इवेंट पर कार्रवाई करनी हो और विफल डिलीवरी को वापस पाना हो, तब वेबहुक का उपयोग करें।
आप सार्वजनिक रूप से पहुंच योग्य एक HTTPS एंडपॉइंट रजिस्टर करते हैं। उसे उन इवेंट प्रकारों की सदस्यता दें जिनकी आपको ज़रूरत है। आपका रिसीवर सबसे पहले सिग्नेचर सत्यापित करता है। फिर वह इवेंट को संग्रहीत करता है। धीमी प्रोसेसिंग शुरू होने से पहले वह डिलीवरी की पुष्टि कर देता है।
समय में समायोजन से पहले Bird लगभग 27.5 घंटों में अधिकतम आठ प्रयास करता है। इस अवधि में रिसीवर को किसी आउटेज से उबरने का समय मिलता है। स्वचालित रूप से फिर से प्रयास करना समाप्त होने के बाद आप रीप्ले का अनुरोध कर सकते हैं। रीप्ले आपकी चुनी हुई समय-अवधि में विफल हुई डिलीवरी को एक बार और भेजता है।
webhook-id के आधार पर डुप्लिकेट हटाएं, क्योंकि एक ही इवेंट कई बार आ सकता है। स्टेट को ओवरराइट करने से पहले इवेंट होने के समय की तुलना करें, क्योंकि इवेंट क्रम से बाहर आ सकते हैं।
विफल वेबहुक के लिए फिर से प्रयास में रिकवरी की सीमाएं बताई गई हैं। डुप्लिकेट संभालना में बताया गया है कि सफलता लौटाने से पहले इवेंट को सुरक्षित रूप से कैसे संग्रहीत करें।
इसके बजाय Realtime का उपयोग कब करना चाहिए?
जब किसी कनेक्टेड ब्राउज़र या ऐप्लिकेशन को आपके सर्वर के प्रकाशित करते ही अपडेट चाहिए, तब Realtime का उपयोग करें।
चैनल एक नामित गंतव्य है जिसकी क्लाइंट सदस्यता लेते हैं। आपका सर्वर उस नाम पर एक इवेंट प्रकाशित करता है, और सदस्यता लेने वाले क्लाइंट उसे अपने कनेक्शन पर प्राप्त करते हैं। इससे ऑर्डर पेज, चैट बातचीत या प्रगति डिस्प्ले बिना रिफ्रेश के अपडेट हो सकता है।
Realtime उन सभी इवेंट को दोबारा नहीं भेजता जो डिस्कनेक्ट हुए क्लाइंट से छूट गए। स्थायी स्टेट अपने डेटाबेस में रखें और दोबारा कनेक्ट होने के बाद व्यू को बहाल करें।
कैश चैनल नए सदस्यों के लिए अपना नवीनतम इवेंट तब तक रखता है जब तक वह कैश की गई वैल्यू उपलब्ध रहती है। वह इवेंट का कोई इतिहास नहीं रखता। अगर क्लाइंट के ऑफ़लाइन रहते दो अपडेट होते हैं, तो कैश की गई नवीनतम वैल्यू बीच वाले अपडेट को वापस नहीं ला सकती।
ऐप कुंजी क्लाइंट कोड में दिखती है, इसलिए उस कुंजी वाला कोई भी विज़िटर सार्वजनिक चैनल पढ़ सकता है। private- से शुरू होने वाले चैनल के लिए आपके बैकएंड को सदस्यता अधिकृत करनी होती है। presence- चैनल सदस्यता लेने वाले सदस्यों की पहचान भी साझा करता है।
चैनल के नाम में 1 से 164 वर्ण हो सकते हैं, जिनमें अक्षर, अंक और _ - = @ , . ; शामिल हैं। प्रीफ़िक्स भी इसी सीमा में गिना जाता है, इसलिए जनरेट किए गए नाम की जाँच करते समय उसे भी शामिल करें।
जब किसी चैनल को पहला सब्सक्राइबर मिलता है या आखिरी सब्सक्राइबर चला जाता है, तब Realtime वेबहुक भी भेजता है। सदस्यता वेबहुक बताते हैं कि कौन से सदस्य जुड़े या गए। इन्हें डैशबोर्ड से कॉन्फ़िगर करें। पब्लिश/सब्सक्राइब बनाम वेबहुक बताता है कि ये दोनों तरीके एक साथ कैसे काम करते हैं।
क्या Bird में SSE एंडपॉइंट है?
Bird में प्रमाणित डैशबोर्ड सत्रों के लिए एक SSE एंडपॉइंट, getEventsStream, है।
GET /v1/events/stream API संसाधनों में हुए बदलावों की सूचना देता है। हर सूचना में संसाधन का प्रकार, पहचानकर्ता और घटना का समय होता है, ताकि डैशबोर्ड संसाधन का डेटा प्राप्त कर सके।
यह एंडपॉइंट डैशबोर्ड सत्र कुकी स्वीकार करता है। यह API कुंजी स्वीकार नहीं करता, इसलिए API कुंजी वाले इंटीग्रेशन के लिए वेबहुक या पोलिंग का उपयोग करें।
पोलिंग कब सही है?
पोलिंग का उपयोग तब करें जब आपको संसाधन की स्थिति चाहिए, आप आने वाले अनुरोध प्राप्त नहीं कर सकते या बदलाव के लिए कोई सार्वजनिक इवेंट नहीं है।
यह जाँचने के लिए पोल करें कि किसी कैरियर ने टेक्स्ट भेजने के लिए आपके टोल-फ़्री नंबर को मंज़ूरी दी है या नहीं। उस सत्यापन निर्णय के लिए Bird में कोई सार्वजनिक वेबहुक इवेंट नहीं है। bird sms tfn verifications get या संबंधित एजेंट टूल के ज़रिए तय समय पर सत्यापन पढ़ें। कमांड ऑपरेशन सार्वजनिक API बंडल में शामिल नहीं है।
पोलिंग ऐसे नेटवर्क में भी काम करती है जो बाहर जाने वाले अनुरोधों की अनुमति देता है, लेकिन रिसीवर को उजागर नहीं कर सकता। अगर आपको केवल वर्तमान स्थिति चाहिए, तो संसाधन पढ़ने से उसे पिछले इवेंट से दोबारा बनाने की ज़रूरत नहीं पड़ती।
रीड और लिस्ट अनुरोध किसी संगठन के भीतर हर कार्य करने वाले क्रेडेंशियल के अनुरोध दर बजट का उपयोग करते हैं। HTTP 429 प्रतिक्रिया मिलने के बाद दोबारा अनुरोध करने से पहले प्रतीक्षा करें। अंतराल इस हिसाब से तय करें कि आपके एप्लिकेशन को किसी बदलाव का कितनी जल्दी पता चलना चाहिए।
वेबहुक, Realtime और अनुरोध दर सीमाएँ इन तरीकों के कॉन्फ़िगरेशन की जानकारी देते हैं।
मुझे कौन-सा विकल्प चुनना चाहिए?
इस आधार पर चुनें कि अपडेट का उपयोग कौन करता है और कनेक्शन टूटने के बाद क्या सुरक्षित रहना ज़रूरी है।
- Webhooks तब चुनें, जब आपके सर्वर को इवेंट प्रोसेस करने हों और विफल डिलीवरी के लिए फिर से प्रयास और रीप्ले की ज़रूरत हो।
- Realtime तब चुनें, जब कनेक्टेड स्क्रीन को अपडेट चाहिए हों और वे दोबारा कनेक्ट होने के बाद संग्रहीत स्थिति से व्यू बहाल कर सकें।
- Polling तब चुनें, जब आपको रिसोर्स की स्थिति चाहिए, आप रिसीवर सार्वजनिक रूप से उपलब्ध नहीं करा सकते या बदलाव के लिए कोई सार्वजनिक इवेंट नहीं है।
- SSE स्ट्रीम प्रमाणित Bird डैशबोर्ड सेशन के लिए चुनें।
संक्षेप में
सर्वर-साइड इवेंट संभालने के लिए webhooks चुनें।
जब आउटेज के बाद आपके सर्वर को डिलीवरी फिर से हासिल करनी हो, तो फिर से प्रयास और विफल इवेंट के replay का इस्तेमाल करें।
कनेक्टेड स्क्रीन के लिए Realtime चुनें।
क्लाइंट के दोबारा कनेक्ट होने पर संग्रहीत स्थिति से व्यू बहाल करें।
resource की स्थिति के लिए polling चुनें।
जब आप receiver उपलब्ध नहीं करा सकते, कोई सार्वजनिक इवेंट नहीं है या आपको सिर्फ़ resource की स्थिति चाहिए, तब poll करें।
Bird डैशबोर्ड सेशन के लिए SSE इस्तेमाल करें।
इस stream के लिए डैशबोर्ड सेशन ऑथेंटिकेशन ज़रूरी है।