एक ऑर्डर पेज को आपके डेटाबेस के साथ ही अपडेट की ज़रूरत हो सकती है। Webhook डेटाबेस बदलाव ट्रिगर कर सकता है। इसके बाद आपका सर्वर परिणामी स्टेट को कनेक्टेड स्क्रीन पर पब्लिश कर सकता है।
Bird Realtime, WebSockets पर अपडेट डिलीवर करता है।
चैनल, मेंबर और कनेक्शन क्या हैं?
चैनल सब्सक्रिप्शन को समूहित करता है। कनेक्शन एक खुला WebSocket है। मेंबर एक प्रमाणित पहचान है जो अन्य सब्सक्राइबर्स के साथ साझा होती है।
Presence चैनल दिखाता है कि कौन से मेंबर सब्सक्राइब्ड हैं। एक मेंबर कई कनेक्शन इस्तेमाल कर सकता है, जैसे अलग-अलग ब्राउज़र टैब।
Bird एक चैनल तब बनाता है जब उसका पहला कनेक्शन सब्सक्राइब करता है और आखिरी कनेक्शन जाने के बाद उसे हटा देता है। आप अलग चैनल रिसोर्स बनाए बिना चैनल नाम पर पब्लिश करते हैं।
हर कनेक्शन को एक आइडेंटिफ़ायर मिलता है। आपका बैकएंड इसका उपयोग private सब्सक्रिप्शन को अनुमोदित करने के लिए करता है। पब्लिश उस कनेक्शन को बाहर रख सकता है ताकि उसका अपना अपडेट वापस न आए।
अगर एक मेंबर तीन टैब खोलता है, तो वे टैब एक मेंबर पहचान के तहत तीन कनेक्शन बना सकते हैं। Presence पहले कनेक्शन पर मेंबर की जॉइनिंग और आखिरी कनेक्शन बंद होने के बाद उसके जाने की रिपोर्ट करता है। इसलिए बीच वाला टैब बंद करने से वह मेंबर सूची से नहीं हटता।
सब्सक्राइब करने की अनुमति किसे है?
चैनल का प्रीफ़िक्स यह तय करता है कि सब्सक्रिप्शन को आपके बैकएंड से प्राधिकरण की ज़रूरत है या नहीं।
आप 1 से 164 अक्षरों का Bird चैनल नाम चुनते हैं, जिसमें अक्षर, अंक और _ - = @ , . ; शामिल हो सकते हैं। प्रीफ़िक्स को इस लंबाई में शामिल करें ताकि जनरेट किया गया private नाम सीमा के भीतर रहे।
| नाम प्रीफ़िक्स | एक्सेस |
|---|---|
| कोई private या presence प्रीफ़िक्स नहीं | App key रखने वाले क्लाइंट्स के लिए सार्वजनिक। |
private- | आपका बैकएंड हर सब्सक्रिप्शन को अनुमोदित और साइन करता है। |
presence- | आपका बैकएंड सब्सक्रिप्शन अनुमोदित करता है और सब्सक्राइबर्स के साथ साझा की जाने वाली मेंबर पहचान प्रदान करता है। |
private-encrypted- | आपकी नियंत्रित की से एन्क्रिप्ट किए गए इवेंट कंटेंट के साथ private एक्सेस। |
App key क्लाइंट कोड में दिखती है, इसलिए कोई अस्पष्ट सार्वजनिक चैनल नाम गोपनीय डेटा की सुरक्षा नहीं करता। App secret अपने सर्वर पर रखें और सब्सक्रिप्शन अनुमोदन साइन करने के लिए इसका उपयोग करें।
Private सब्सक्रिप्शन के लिए, क्लाइंट अपना कनेक्शन आइडेंटिफ़ायर और चैनल नाम आपके प्राधिकरण एंडपॉइंट पर भेजता है। आपका सर्वर सिग्नेचर लौटाने से पहले एक्सेस जाँचता है। वह एंडपॉइंट एक्सेस को प्राधिकृत करता है। यह हर पब्लिश किए गए इवेंट को प्राप्त नहीं करता जैसा एक webhook करता।
व्यवहार में इस अंतर का क्या मतलब है?
अपने सर्वर पर रिकवर किए जा सकने वाले काम के लिए webhooks का उपयोग करें। कनेक्टेड क्लाइंट्स को अपडेट के लिए pub/sub का उपयोग करें।
Bird webhook आपके संचालित HTTPS एंडपॉइंट पर एक इवेंट भेजता है। फिर से प्रयास लगभग 27.5 घंटे तक फैले रहते हैं, जिनमें रैंडम वैरिएशन, रिसीवर ओवरलोड और अनुरोधित विलंब से प्रतीक्षा समायोजित होती है। यह विंडो आपके रिसीवर को रिकवर होने का समय देती है। Missed-event replay असफल रही डिलीवरी को रिकवर कर सकता है।
Realtime चैनल आपके पब्लिश किए गए इवेंट को सब्सक्राइब्ड क्लाइंट्स तक भेजता है। डिस्कनेक्ट हुआ क्लाइंट इसे मिस कर सकता है। कैश चैनल अपने नवीनतम इवेंट को नए सब्सक्राइबर को तब तक दे सकता है जब तक वह इवेंट कैश में है। यह बीच के इवेंट इतिहास को नहीं रखता।
गोपनीय सर्वर-साइड प्रोसेसिंग को अपने webhook रिसीवर के पीछे रखें। केवल वह स्टेट पब्लिश करें जो चैनल के अधिकृत क्लाइंट देख सकते हैं।
Webhook इवेंट टाइप Bird के कैटलॉग से आते हैं, जैसे email.delivered। Realtime में, आप पब्लिश करते समय अपने ऐप्लिकेशन का इवेंट नाम चुनते हैं। event नाम 1 से 200 अक्षर स्वीकार करता है। प्रीफ़िक्स bird: और bird_internal: आरक्षित हैं और आपके ऐप्लिकेशन इवेंट का नाम नहीं रख सकते।
क्लाइंट्स को सब्सक्रिप्शन सफलता, मेंबर परिवर्तन और कनेक्शन काउंट के बारे में प्रोटोकॉल इवेंट भी मिलते हैं। ये इवेंट आपके ऐप्लिकेशन के ऑर्डर या मैसेज के बजाय कनेक्शन या चैनल का वर्णन करते हैं।
इन्हें एक साथ कैसे इस्तेमाल करें?
कनेक्टेड क्लाइंट्स के लिए Realtime अपडेट चलाने के लिए webhook के स्टोर्ड इवेंट का उपयोग करें।
अपने सर्वर पर बिज़नेस इवेंट प्राप्त करें। पब्लिश करने से पहले स्थायी स्टेट अपडेट करें। फिर वह स्टेट पब्लिश करें जो कनेक्टेड क्लाइंट्स को चाहिए।
ऑर्डर पेज के लिए, webhook डेटाबेस अपडेट ट्रिगर कर सकता है। फिर आपका सर्वर अपडेटेड ऑर्डर स्टेट पब्लिश करता है ताकि ग्राहक का पेज बिना रिफ़्रेश के बदल जाए।
उस डेटाबेस स्टेट को रीकनेक्ट के बाद पढ़ने योग्य रखें क्योंकि डिस्कनेक्ट हुआ क्लाइंट पब्लिकेशन मिस कर सकता है। Webhooks, polling या streaming रिकवरी विकल्पों की तुलना करता है।
Realtime के अपने webhooks भी हैं जो चैनल ऑक्यूपेंसी और मेंबर आगमन या प्रस्थान के लिए हैं। इन्हें सार्वजनिक webhooks API के बजाय डैशबोर्ड के ज़रिए कॉन्फ़िगर करें।
Realtime अवलोकन क्लाइंट कनेक्शन को कवर करता है। Webhooks आपके सर्वर तक डिलीवर की गई रिक्वेस्ट को कवर करता है।
संक्षेप में
एक चैनल के कई सब्सक्राइबर हो सकते हैं।
Webhook रिक्वेस्ट एक रजिस्टर्ड एंडपॉइंट पर जाती है। पब्लिकेशन उसके चैनल पर सब्सक्राइब्ड क्लाइंट्स तक पहुँचता है।
Private सब्सक्रिप्शन के लिए बैकएंड अनुमोदन ज़रूरी है।
App key क्लाइंट कोड में दिखती है। Private और presence प्रीफ़िक्स के लिए आपके सर्वर से सिग्नेचर ज़रूरी है।
मेंबर की कई कनेक्शन हो सकती हैं।
एक मेंबर जो तीन टैब इस्तेमाल कर रहा है, पहले कनेक्शन पर presence में शामिल होता है और आखिरी कनेक्शन बंद होने के बाद बाहर होता है।
डिलीवरी रिकवरी को कनेक्टेड व्यू के साथ जोड़ें।
सर्वर इवेंट के लिए webhook रिकवरी का उपयोग करें और डिस्कनेक्शन के बाद Realtime व्यू बहाल करने के लिए स्टोर्ड स्टेट का उपयोग करें।