Sign inGet Started

Realtime का अवलोकन

Realtime कनेक्ट किए गए क्लाइंट तक WebSockets के ज़रिए इवेंट पहुँचाता है। आपका सर्वर किसी नाम वाले चैनल पर इवेंट प्रकाशित करता है, और सब्सक्राइब किए हुए क्लाइंट उसे बार-बार पूछे बिना प्राप्त कर लेते हैं।

Realtime का उपयोग उन बदलावों के लिए करें जिनकी ज़रूरत क्लाइंट को अलग से अनुरोध किए बिना होती है, जैसे ऑर्डर अपडेट, चैट संदेश, डैशबोर्ड में बदलाव या पूरे हो चुके बैकग्राउंड जॉब।

चैनल, सदस्य और कनेक्शन

यह मॉडल तीन शब्दों से समझा जाता है। इनका अर्थ एक-दूसरे से अलग है।

चैनल एक नाम वाला कमरा है। यह तब तक मौजूद रहता है जब तक कम से कम एक कनेक्शन उससे सब्सक्राइब रहता है, और आखिरी कनेक्शन के निकलते ही गायब हो जाता है। चैनल के नाम में अधिकतम 164 अक्षर, अंक और ये वर्ण हो सकते हैं: _ - = @ , . ;।

कनेक्शन एक खुला WebSocket है। कनेक्ट होने पर इसे एक ID (26896.319537) मिलती है। ऑथराइज़ेशन इसी ID पर हस्ताक्षर करता है, और इवेंट प्रकाशित करते समय इस ID को डिलीवरी से बाहर रखा जा सकता है।

सदस्य किसी प्रेज़ेंस चैनल पर प्रमाणित पहचान है। एक सदस्य के कई कनेक्शन हो सकते हैं, जैसे ब्राउज़र के तीन टैब। प्रेज़ेंस इवेंट तब भेजे जाते हैं जब सदस्य का पहला कनेक्शन जुड़ता है और आखिरी कनेक्शन निकलता है। बीच के टैब से ये इवेंट नहीं बनते।

तीन प्रकार के चैनल

चैनल के नाम का प्रीफ़िक्स चैनल का प्रकार और उसका ऑथराइज़ेशन व्यवहार तय करता है।

नामकौन सब्सक्राइब कर सकता हैसदस्य होते हैं
ordersऐप कुंजी रखने वाला कोई भीनहीं
private-ordersकेवल वे क्लाइंट जिनके लिए आपका बैकएंड हस्ताक्षर करता हैनहीं
presence-lobbyकेवल वे क्लाइंट जिनके लिए आपका बैकएंड हस्ताक्षर करता हैहाँ

सार्वजनिक चैनल को ऐप कुंजी रखने वाला कोई भी व्यक्ति पढ़ सकता है, और यह कुंजी क्लाइंट कोड में शामिल होती है। केवल वही डेटा प्रकाशित करें जिसे हर विज़िटर देख सकता है। सार्वजनिक चैनल देखें।

निजी चैनल हर सब्सक्रिप्शन को स्वीकृत करने के लिए आपके बैकएंड से पूछता है। क्लाइंट कनेक्शन ID और चैनल का नाम आपके एंडपॉइंट पर भेजता है, और एंडपॉइंट ऐप सीक्रेट से गणना किया गया सिग्नेचर लौटाता है। निजी चैनल देखें। private-encrypted-… चैनल आपके सर्वर पर रखी कुंजी से पेलोड को एन्क्रिप्ट भी करता है। एन्क्रिप्टेड चैनल देखें।

प्रेज़ेंस चैनल निजी चैनल के ऑथराइज़ेशन में एक पहचान जोड़ता है। हर सब्सक्राइबर को सदस्य सूची मिलती है, और उसमें होने वाले बदलाव member_id और वैकल्पिक member_info के ज़रिए मिलते हैं। प्रेज़ेंस चैनल देखें।

क्लाइंट को मिलने वाले इवेंट

ऐप्लिकेशन इवेंट आपके अपने होते हैं: प्रकाशित करते समय आप उनका नाम चुनते हैं (order-updated, message.created) और उससे एक हैंडलर बाइंड करते हैं। इनके साथ, क्लाइंट bird: प्रीफ़िक्स के तहत लाइफ़साइकल इवेंट भी फिर से भेजता है, जिन्हें आप अपने इवेंट की तरह ही बाइंड करते हैं:

  • bird:subscription_succeeded हर चैनल पर एक बार तब फ़ायर होता है जब सब्सक्रिप्शन सक्रिय हो जाता है। प्रेज़ेंस चैनल पर इसमें मौजूदा सदस्य सूची होती है, इसलिए किसी के आने-जाने से पहले ही आप रूम दिखा सकते हैं।
  • bird:member_added और bird:member_removed प्रेज़ेंस चैनलों पर सदस्यों के आने और जाने पर फ़ायर होते हैं। member_added तब फ़ायर होता है जब किसी व्यक्ति का पहला कनेक्शन सब्सक्राइब करता है; member_removed केवल तब, जब उसका आख़िरी कनेक्शन चला जाता है। दूसरा टैब खोलने और बंद करने से इनमें से कोई इवेंट नहीं बनता।
  • अगर ऐप में कनेक्शन गिनती और कनेक्शन गिनती इवेंट चालू हैं, तो bird:connection_count बताता है कि किसी सार्वजनिक या निजी चैनल पर कितने कनेक्शन सब्सक्राइब हैं। प्रेज़ेंस चैनल यह इवेंट नहीं भेजते; उनकी कनेक्शन गिनती सर्वर-साइड चैनल क्वेरी से पढ़ें।
  • bird:subscription_error तब फ़ायर होता है जब सब्सक्रिप्शन अस्वीकार हो जाता है, आमतौर पर ऑथराइज़ेशन विफल होने के कारण।

client- से शुरू होने वाले नाम उन इवेंट के लिए आरक्षित हैं जिन्हें क्लाइंट सीधे एक-दूसरे को भेजते हैं। यह एक अलग ऐप सेटिंग है और केवल निजी और प्रेज़ेंस चैनलों पर अनुमति है।

जब कोई चैनल भर जाता है या खाली हो जाता है, और जब सदस्य जुड़ते या छोड़ते हैं, तब आपका सर्वर भी वेबहुक के रूप में इवेंट प्राप्त कर सकता है। ये realtime.* इवेंट के रूप में उन्हीं वेबहुक एंडपॉइंट से आते हैं जिनसे बाकी Bird आते हैं।

क्लाइंट

तीन क्लाइंट एक ही प्रोटोकॉल से इवेंट प्राप्त करते हैं। ब्राउज़र और Node.js के लिए @messagebird/realtime, iOS, macOS और Linux के लिए BirdRealtime, और Android तथा सर्वर JVM के लिए com.messagebird:bird-realtime का उपयोग करें। हर क्लाइंट सब्सक्रिप्शन, बाइंडिंग, प्रेज़ेंस, signin() और क्लाइंट इवेंट को सपोर्ट करता है।

ऐप सीक्रेट को अपने सर्वर पर ही रखें। सर्वर SDK इसका उपयोग इवेंट प्रकाशित करने, चैनल ऑथराइज़ करने और सदस्यों को डिस्कनेक्ट करने के लिए करते हैं।

ऐप, कुंजियाँ और क्षेत्र

ऐप एक अलग-थलग परिवेश है, जिसके अपने क्रेडेंशियल और अपना चैनल नेमस्पेस होता है। दो ऐप कभी एक-दूसरे के चैनल नहीं देखते, इसलिए आपके स्टेजिंग और प्रोडक्शन परिवेशों को अलग रखने के लिए ऐप सही सीमा है।

हर ऐप एक ऐसे क्षेत्र का उपयोग करता है जो बनाते समय चुना जाता है और बाद में बदला नहीं जा सकता। स्वीकृत पहचानकर्ता पाने के लिए Realtime क्षेत्रों की सूची का उपयोग करें, और अपने उपयोगकर्ताओं के सबसे नज़दीकी क्षेत्र को चुनें।

हर ऐप में तीन मान होते हैं, जिनके उपयोग अलग-अलग हैं:

  • ऐप ID (rap_…) Bird API कॉल में ऐप की पहचान करता है और हर /v1/realtime/apps/… पाथ में दिखाई देता है।
  • कुंजी सार्वजनिक है। ब्राउज़र इसी से कनेक्ट करते हैं, और इसे क्लाइंट कोड में शामिल करना सुरक्षित है।
  • सीक्रेट कुंजी के साथ मिलकर सर्वर-साइड कॉल को प्रमाणित करता है और चैनल ऑथराइज़ेशन पर हस्ताक्षर करता है। यह केवल एक बार, बनाते समय दिखाया जाता है। जिसके पास यह है, वह आपके ऐप पर प्रकाशित कर सकता है और नकली प्रेज़ेंस पहचान बना सकता है।

Realtime ऐप पेज पर ऐप प्रबंधित करें और कुंजियाँ बदलें। दूसरी कुंजी बनाएँ, उसे डिप्लॉय करें और फिर पुरानी कुंजी रद्द करें।

दृश्यता

Realtime मेट्रिक्स पेज आपकी चुनी गई अवधि के लिए हर ऐप या पूरे वर्कस्पेस के तीन मान दिखाता है:

  • Max connections चुनी गई अवधि के भीतर किसी एक क्षण में एक साथ खुले कनेक्शनों की सबसे बड़ी संख्या है। कनेक्शन सीमा इसी शिखर मान पर लागू होती है।
  • Average connections दैनिक शिखर मानों का माध्य है। यह हर नमूने का औसत नहीं निकालता। जिस वर्कस्पेस में हर दोपहर उछाल आता है और रात भर गतिविधि नहीं रहती, उसका औसत शांत घंटों के स्तर से काफ़ी ऊपर दिखता है।
  • Messages इवेंट डिलीवरी गिनता है, हर चैनल के लिए एक: 50 चैनलों को नामित करने वाला एक पब्लिश 50 गिना जाता है। इसमें वे इवेंट भी शामिल हैं जो प्रोटोकॉल आपकी ओर से भेजता है, इसलिए प्रेज़ेंस जॉइन और कनेक्शन-काउंट अपडेट भी इसी संख्या में जुड़ते हैं। इसी कारण यह संख्या आपके कोड द्वारा किए गए पब्लिश से अधिक हो सकती है।

उपयोग एक-एक मिनट के खंडों में एकत्र किया जाता है, इसलिए हाल के ट्रैफ़िक को दिखने में कई मिनट लग सकते हैं। उपयोग API केवल डैशबोर्ड के लिए उपलब्ध है। प्रोग्राम के ज़रिए दृश्यता के लिए अपने सिस्टम में पब्लिश दर्ज करें या realtime.* वेबहुक से गतिविधि निकालें।

प्लान और सीमाएँ

फ़्री प्लान में किसी वर्कस्पेस के सभी ऐप्स को मिलाकर 100 समवर्ती कनेक्शन और प्रति दिन 200,000 मैसेज शामिल हैं। ज़्यादा ऐप्स बनाने से यह सीमा नहीं बढ़ती, क्योंकि यह वर्कस्पेस पर लागू होती है।

पेड Realtime प्लान क्षमता प्लान हैं: मासिक शुल्क कनेक्शन सीमा, दैनिक मैसेज सीमा और realtime_publish दर सीमा बढ़ाता है, लेकिन आपके वॉलेट में कुछ नहीं जोड़ता। Billing and payments > Overview में अपग्रेड करें; Realtime मूल्य निर्धारण में हर प्लान की कीमत और सीमाएँ दी गई हैं।

हर प्लान पर प्रति-अनुरोध सीमाएँ लागू होती हैं: एक पब्लिश अधिकतम 100 चैनल नामित कर सकता है, एक बैच में अधिकतम 10 इवेंट हो सकते हैं, और किसी इवेंट का पेलोड सीरियलाइज़ होने के बाद अधिकतम 10 KB हो सकता है।

अगले कदम

इस विषय के लिए दस्तावेज़, गाइड और उदाहरणों के साथ आगे बढ़ें।