# Watchlist-Events

Ein Mitglied, das sich anmeldet, kann die Mitglieder benennen, denen es folgen möchte, und die Verbindung wird benachrichtigt, wenn eines davon online oder offline geht. Das ist die gesamte Funktion: kein Kanal pro Beziehung, kein Polling, eine Liste.

Watchlist-Events bauen auf dem [Member-Signin](/docs/guides/realtime/terminating-member-connections) auf. Die Identität, die Ihr Backend beim Signin signiert, kann ein `watchlist`-Array mit Member-IDs enthalten; wenn die `watchlist_events`-Einstellung der App aktiviert ist, empfängt die Verbindung Online- und Offline-Events für genau diese IDs. Ein Mitglied ist online, solange es mindestens eine angemeldete Verbindung hat: Die erste Verbindung löst `online` aus, das Schließen der letzten löst `offline` aus, und Tabs dazwischen lösen nichts aus – dieselbe Zählung, die Presence-Kanäle verwenden.

## Aktivierung

Schalten Sie **Watchlist events** in den Einstellungen der App auf der Seite [**Realtime → Apps**](https://bird.com/dashboard/w/realtime/apps) um, oder setzen Sie `watchlist_events` über die Realtime-API auf `true` für die App. Verbindungen übernehmen die Einstellung beim Verbindungsaufbau, also aktivieren Sie sie, bevor die Clients ausgeliefert werden, die darauf angewiesen sind.

## Watchlist in die signierte Identität einfügen

Die Watchlist ist Teil von `member_data`, dem JSON-String, den Ihr Member-Auth-Endpoint signiert. Fügen Sie die IDs neben der Identität hinzu:

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

Da die Liste in der signierten Identität steckt, entscheidet Ihr Auth-Endpoint, wen ein Mitglied beobachten darf: Erstellen Sie das Array aus Ihren eigenen Daten (Kontakte, Team), anstatt eines vom Client gesendeten zu akzeptieren, sonst kann jedes Mitglied jedes andere beobachten. Eine Watchlist fasst bis zu 100 IDs; eine längere Liste wird auf die ersten 100 gekürzt, und die Verbindung empfängt den Fehler `4302` mit den IDs, die akzeptiert wurden.

Die Liste wird beim Signin erfasst und gilt für die gesamte Lebensdauer der Verbindung. Um sie zu ändern, lassen Sie Ihren Endpoint die neue Liste signieren: Der Client meldet sich bei jedem Reconnect automatisch erneut an, sodass die nächste Verbindung der aktualisierten Liste folgt und deren aktuelle Status empfängt.

## Im Browser lauschen

Binden Sie auf `bird.member.watchlist`. Der aktuelle Status der gesamten Liste trifft direkt nach dem Signin ein, sodass Sie anzeigen können, wer online ist, bevor sich ein Status ändert:

```typescript
await bird.signin();

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

Jedes Event enthält die Member-IDs, auf die es sich bezieht. Die initiale Zustellung nach dem Signin deckt die gesamte Liste ab, gruppiert nach Status; danach treffen Events ein, wenn Mitglieder die Grenze zwischen null und einer Verbindung überschreiten.

## Watchlist oder Presence?

Presence-Kanäle beantworten "who is in this room with me": Alle abonnieren denselben Kanal und sehen dieselbe Mitgliederliste. Eine Watchlist beantwortet "are the people I care about online anywhere": Jedes Mitglied folgt seiner eigenen Liste, und die beobachteten Personen müssen nichts weiter tun, als sich anzumelden. Eine Kontaktliste, ein Agenten-Verfügbarkeitsindikator oder ein "your contact just came online"-Hinweis ist Watchlist-Arbeit; eine gemeinsame Raum-Teilnehmerliste ist Presence.

## Nächste Schritte

- [Member-Verbindungen beenden](/docs/guides/realtime/terminating-member-connections) behandelt das Signin und den Identitätsvertrag, in dem die Watchlist enthalten ist.
- [Presence-Kanäle](/docs/guides/realtime/presence-channels) für gemeinsame Raum-Mitgliedschaft statt persönlicher Folgelisten.
- [Events an ein Mitglied senden](/docs/guides/realtime/sending-events-to-a-member) ist die andere mitgliederbezogene Oberfläche.

## 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)
