Cache channels
एक cache channel अपना नवीनतम इवेंट याद रखता है और हर नए सब्सक्राइबर को उसे रीप्ले करता है। अपडेट के बाद कनेक्ट होने वाला क्लाइंट अगले पब्लिश की प्रतीक्षा किए बिना वर्तमान स्थिति रेंडर कर सकता है।
Cache channels का उपयोग वर्तमान मानों के लिए करें जैसे मैच स्कोर, डिवाइस स्थिति, बिल्ड प्रगति, या ऑर्डर स्टेटस। सब्सक्रिप्शन प्रारंभिक स्थिति और बाद के अपडेट प्रदान करता है।
Cache channel का नाम दें
चैनल का नाम कैशिंग सक्षम करता है। cache- को नाम की शुरुआत में या उसके channel-type prefix के तुरंत बाद रखें।
| नाम | कैश्ड | सब्सक्रिप्शन |
|---|---|---|
| cache-orders | हाँ | app key रखने वाला कोई भी |
| private-cache-orders | हाँ | आपका बैकएंड क्लाइंट के लिए साइन करता है |
| presence-cache-lobby | हाँ | आपका बैकएंड साइन करता है, सदस्य ट्रैक होते हैं |
| orders-cache | नहीं | app key रखने वाला कोई भी |
orders-cache एक cache channel नहीं है। cache- prefix को किसी भी private- या presence- prefix के बाद नाम की शुरुआत में होना चाहिए।
चैनल के बारे में बाकी सब कुछ अपरिवर्तित रहता है। एक private-cache- चैनल ठीक उसी तरह authorize होता है जैसे एक private channel, और एक presence-cache- चैनल अभी भी किसी अन्य presence channel की तरह सदस्यों को ट्रैक करता है और member इवेंट फायर करता है।
सब्सक्राइब करना
const bird = new BirdRealtime({ appKey: "your-app-key", region: "us1" });
const match = bird.subscribe("cache-match-42");
match.bind("score-updated", (data) => {
render(data);
});
match.bind("bird:cache_miss", () => {
console.log("nothing cached for this channel yet");
});let bird = BirdRealtime(options: .init(appKey: "your-app-key", region: "us1"))
let match = bird.subscribe("cache-match-42")
match.bind("score-updated") { data in
render(data)
}
match.bind("bird:cache_miss") { _ in
print("nothing cached for this channel yet")
}val bird = BirdRealtime(BirdRealtimeOptions(appKey = "your-app-key", region = "us1"))
val match = bird.subscribe("cache-match-42")
match.bind("score-updated") { data ->
render(data)
}
match.bind("bird:cache_miss") {
println("nothing cached for this channel yet")
}हिट होने पर, कैश्ड इवेंट सब्सक्रिप्शन सफल होने के बाद आता है। इसमें मूल इवेंट नाम और पेलोड होता है, इसलिए एक ही हैंडलर कैश्ड और लाइव इवेंट दोनों को प्रोसेस करता है।
मिस होने पर, क्लाइंट को उस चैनल पर bird:cache_miss मिलता है। या तो चैनल पर कभी कोई पब्लिश नहीं हुआ है या उसका कैश्ड इवेंट एक्सपायर हो चुका है।
मिस होने पर कैश भरना
यदि कोई endpoint realtime.cache_channels को सब्सक्राइब करता है, तो मिस आपके सर्वर तक भी पहुँचती है। webhook को हैंडल करते हुए वर्तमान स्थिति पढ़ें और उसे चैनल पर पब्लिश करें।
await bird.realtime.publish(appId, {
event: "score-updated",
channels: ["cache-match-42"],
data: await currentScore(42),
});client.realtime.publish(
app_id,
event="score-updated",
channels=["cache-match-42"],
data=current_score(42),
)_, err := client.Realtime.Publish(context.Background(), appID, bird.RealtimePublishParams{
Event: "score-updated",
Channels: []string{"cache-match-42"},
Data: currentScore(42),
})$bird->realtime->publish($appId, (new RealtimePublish())
->setEvent('score-updated')
->setChannels(['cache-match-42'])
->setData(currentScore(42)));मिस उत्पन्न करने वाला क्लाइंट आपके सर्वर द्वारा रिप्लेसमेंट इवेंट पब्लिश करने से पहले ही सब्सक्राइब हो चुका होता है, इसलिए उसे नई स्थिति मिल जाती है। यह फ़्लो पहले सब्सक्राइबर के लिए एक खाली कैश को भी भरता है।
कैश सामग्री और अवधारण
API के माध्यम से पब्लिश किए गए इवेंट कैश होते हैं, जिसमें सिंगल और बैच पब्लिश शामिल हैं। जिन क्लाइंट इवेंट के नाम client- से शुरू होते हैं, वे कैश नहीं होते।
कैश्ड इवेंट अधिकतम 30 मिनट तक उपलब्ध रह सकते हैं, लेकिन वे पहले भी एक्सपायर हो सकते हैं। कम अपडेट होने वाले चैनलों को cache-miss webhook से दोबारा भरें, कैश गर्म होने की धारणा न बनाएँ।
प्रत्येक चैनल केवल अपना सबसे हालिया इवेंट याद रखता है। यदि आप score-updated पब्लिश करते हैं और फिर match-ended, तो नए सब्सक्राइबर को केवल match-ended मिलता है। प्रति cache channel एक इवेंट नाम का उपयोग करें, या हर पेलोड में पूरी स्थिति शामिल करें।
कैश सीमाएँ
एक cache channel केवल सबसे हालिया इवेंट स्टोर करता है। यह इवेंट इतिहास संरक्षित नहीं करता। ऑफ़लाइन रहते हुए दो अपडेट चूकने वाले क्लाइंट को बीच का इवेंट नहीं, बल्कि नवीनतम स्थिति मिलती है। टिकाऊ स्थिति अपने डेटाबेस में रखें। पुनः कनेक्ट होने पर, क्लाइंट फिर से सब्सक्राइब करता है और यदि कोई कैश्ड इवेंट उपलब्ध है तो उसे रेंडर करता है। डिलीवरी गारंटी के लिए इवेंट पब्लिश करना देखें।
अगले कदम
- इवेंट पब्लिश करना आपके सर्वर से पब्लिश करना, बैचिंग, और ब्रॉडकास्टिंग को कवर करता है।
- Private channels और Presence channels एक ही नाम में cache- के साथ मिलते हैं।
- चैनल स्थिति क्वेरी करना आपके सर्वर से ऑक्यूपेंसी और काउंट पढ़ता है।
संबंधित संसाधन
इस विषय के लिए डॉक्यूमेंटेशन, गाइड और उदाहरणों के साथ आगे बढ़ें। संसाधन अंग्रेज़ी में हैं।
क्षमता जानेंRealtimeलर्निंग पाथ फ़ॉलो करेंBuild your first integrationइम्प्लीमेंटेशन गाइडSend your first realtime event
अभ्यास करें और इम्प्लीमेंटेशन ब्रीफ़ पाएँ