# Watchlist इवेंट

साइन इन करने वाला सदस्य उन सदस्यों के नाम बता सकता है जिन्हें वह फ़ॉलो करना चाहता है, और कनेक्शन को सूचित किया जाता है जब उनमें से कोई ऑनलाइन या ऑफ़लाइन होता है। पूरा फ़ीचर इतना ही है: हर रिश्ते के लिए कोई चैनल नहीं, कोई पोलिंग नहीं, एक लिस्ट।

Watchlist इवेंट [member signin](/docs/guides/realtime/terminating-member-connections) पर आधारित हैं। साइन-इन के समय आपका बैकएंड जो identity साइन करता है, उसमें member ids का एक `watchlist` ऐरे हो सकता है; जब ऐप की `watchlist_events` सेटिंग चालू हो, तो कनेक्शन को ठीक उन्हीं ids के लिए ऑनलाइन और ऑफ़लाइन इवेंट मिलते हैं। कोई सदस्य तब तक ऑनलाइन है जब तक उसका कम से कम एक साइन-इन कनेक्शन हो: पहला कनेक्शन `online` फ़ायर करता है, आख़िरी कनेक्शन बंद होने पर `offline` फ़ायर होता है, और बीच के टैब कुछ फ़ायर नहीं करते, वही काउंटिंग जो presence चैनल इस्तेमाल करते हैं।

## इसे चालू करें

[**Realtime → Apps**](https://bird.com/dashboard/w/realtime/apps) पेज पर ऐप की सेटिंग्स में **Watchlist events** टॉगल करें, या Realtime API के ज़रिए ऐप पर `watchlist_events` को `true` सेट करें। कनेक्शन कनेक्ट होते समय यह सेटिंग उठाते हैं, इसलिए इसे उन क्लाइंट्स के शिप होने से पहले चालू करें जो इस पर निर्भर हैं।

## Watchlist को साइन की गई identity में रखें

Watchlist `member_data` का हिस्सा है, वह JSON स्ट्रिंग जिसे आपका member auth endpoint साइन करता है। identity के बगल में ids जोड़ें:

```json
{
  "member_id": "u_1",
  "member_info": { "name": "Ada" },
  "watchlist": ["u_2", "u_3"]
}
```

चूँकि लिस्ट साइन की गई identity के अंदर है, आपका auth endpoint तय करता है कि कोई सदस्य किसे वॉच कर सकता है: ऐरे अपने डेटा (उनके कॉन्टैक्ट्स, उनकी टीम) से बनाएँ, क्लाइंट द्वारा भेजी गई लिस्ट स्वीकार न करें, वरना कोई भी सदस्य किसी भी दूसरे को वॉच कर सकता है। एक watchlist में अधिकतम 100 ids हो सकती हैं; इससे लंबी लिस्ट पहले 100 तक काट दी जाती है और कनेक्शन को error `4302` मिलता है जिसमें स्वीकार की गई ids बताई जाती हैं।

लिस्ट साइन-इन के समय कैप्चर होती है और कनेक्शन की पूरी अवधि तक बनी रहती है। इसे बदलने के लिए अपने endpoint से नई लिस्ट साइन कराएँ: क्लाइंट हर reconnect पर अपने-आप दोबारा साइन इन करता है, इसलिए अगला कनेक्शन अपडेट की गई लिस्ट फ़ॉलो करता है और उसकी मौजूदा स्थितियाँ प्राप्त करता है।

## ब्राउज़र में सुनें

`bird.member.watchlist` पर bind करें। पूरी लिस्ट की मौजूदा स्थिति साइन-इन के तुरंत बाद आती है, इसलिए आप किसी की स्थिति बदलने से पहले ही दिखा सकते हैं कि कौन ऑनलाइन है:

```typescript
await bird.signin();

bird.member.watchlist.bind("online", (memberIds) => {
  console.log("online:", memberIds);
});
bird.member.watchlist.bind("offline", (memberIds) => {
  console.log("offline:", memberIds);
});
```

हर इवेंट उन member ids को साथ लाता है जिन पर वह लागू होता है। साइन-इन के बाद की शुरुआती डिलीवरी पूरी लिस्ट को स्थिति के अनुसार ग्रुप करके कवर करती है; उसके बाद, इवेंट तब आते हैं जब सदस्य शून्य और एक कनेक्शन के बीच आते-जाते हैं।

## Watchlist या presence?

Presence चैनल "who is in this room with me" का जवाब देते हैं: हर कोई एक ही चैनल सब्सक्राइब करता है और एक ही सदस्य सूची देखता है। Watchlist "are the people I care about online anywhere" का जवाब देती है: हर सदस्य अपनी लिस्ट फ़ॉलो करता है, और जिन लोगों को वॉच किया जा रहा है उन्हें साइन इन करने के अलावा कुछ नहीं करना होता। बडी लिस्ट, एजेंट-उपलब्धता इंडिकेटर, या "your contact just came online" नज watchlist का काम है; शेयर्ड रूम रोस्टर presence है।

## अगले कदम

- [Terminating member connections](/docs/guides/realtime/terminating-member-connections) साइन-इन और उस identity कॉन्ट्रैक्ट को कवर करता है जिसमें watchlist रहती है।
- व्यक्तिगत फ़ॉलो लिस्ट की बजाय शेयर्ड-रूम मेंबरशिप के लिए [Presence channels](/docs/guides/realtime/presence-channels)।
- [Sending events to a member](/docs/guides/realtime/sending-events-to-a-member) दूसरा member-addressed सरफ़ेस है।

## Related resources

- [Realtime](/products/realtime) (product)
- [Build your first integration](/learn/paths/integration) (course)
- [Send your first realtime event](/docs/get-started/send-your-first-realtime-event) (docs)

[Get an implementation brief](/learn/workspace?topic=realtime)
