Sign inGet Started

इवेंट प्राप्तकर्ताओं को बाहर रखना

अगर कोई क्लाइंट आपके सर्वर के पब्लिश करने से पहले ही बदलाव को ऑप्टिमिस्टिक तरीके से लागू कर देता है, तो वही इवेंट मिलने पर बदलाव दो बार लागू हो सकता है। इससे स्क्रीन झिलमिला सकती है या कोई आइटम दोहराया जा सकता है।

बदलाव करने वाले क्लाइंट की कनेक्शन ID पास करें, ताकि इवेंट बाकी सभी सब्सक्राइब किए गए कनेक्शनों तक पहुँचे।

await bird.realtime.publish(appId, {
  event: "message.created",
  channels: ["presence-room-1"],
  data: { body: "hello" },
  exclude_connection_id: "26896.319537",
});

कनेक्शन ID प्राप्त करें

क्लाइंट अपनी कनेक्शन ID पढ़ता है और उसे उस अनुरोध के साथ भेजता है जिससे बदलाव शुरू होता है:

const bird = new BirdRealtime({ appKey: "your-app-key", region: "us1" });

await fetch("/messages", {
  method: "POST",
  headers: { "content-type": "application/json" },
  body: JSON.stringify({
    body: "hello",
    connection_id: bird.connection.connectionId,
  }),
});

कनेक्शन स्थापित होने तक ID null रहती है और दोबारा कनेक्ट होने के बाद बदल जाती है। अनुरोध करते समय ब्राउज़र में bird.connection.connectionId पढ़ें, या Swift और Kotlin में bird.connectionId पढ़ें।

इस मान को अविश्वसनीय अनुरोध डेटा मानकर सत्यापित करें, फिर उसे exclude_connection_id में पास करें। यह फ़ील्ड किसी एक कनेक्शन तक डिलीवरी रोक सकती है, लेकिन किसी इवेंट तक पहुँच नहीं दे सकती।

बाहर रखे गए कनेक्शन का व्यवहार

सिर्फ़ नामित कनेक्शन बाहर रहता है। उसी व्यक्ति के दूसरे टैब अलग कनेक्शन इस्तेमाल करते हैं, इसलिए उन्हें इवेंट फिर भी मिलता है।

ऐसी कनेक्शन ID को बाहर रखना त्रुटि नहीं है जो सब्सक्राइब नहीं है या अब मौजूद नहीं है। पब्लिश बाकी सभी तक सामान्य रूप से पहुँचता है।

बहिष्करण कब छोड़ें

ऑप्टिमिस्टिक इंटरफ़ेस के लिए बहिष्करण का उपयोग करें। अगर क्लाइंट कोई बदलाव लागू करने से पहले इवेंट की प्रतीक्षा करता है, तो उसे बाहर न करें। ऐसा करने पर बदलाव करने वाला टैब पुरानी स्थिति में ही रह जाएगा।

अगले कदम

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