# Eventi watchlist

Un membro che si autentica può indicare i membri che vuole seguire, e la connessione viene notificata quando uno di loro va online o offline. La funzionalità è tutta qui: nessun canale per relazione, nessun polling, una sola lista.

Gli eventi watchlist si appoggiano al [signin del membro](/docs/guides/realtime/terminating-member-connections). L'identità che il tuo backend firma al signin può contenere un array `watchlist` di id membro; quando l'impostazione `watchlist_events` dell'app è attiva, la connessione riceve eventi online e offline esattamente per quegli id. Un membro è online finché ha almeno una connessione autenticata: la prima connessione genera `online`, la chiusura dell'ultima genera `offline`, e le schede intermedie non generano nulla, lo stesso conteggio usato dai canali presence.

## Attivazione

Attiva **Watchlist events** nelle impostazioni dell'app dalla pagina [**Realtime → Apps**](https://bird.com/dashboard/w/realtime/apps), oppure imposta `watchlist_events` a `true` sull'app tramite la API Realtime. Le connessioni acquisiscono l'impostazione al momento della connessione, quindi attivala prima di rilasciare i client che ne dipendono.

## Inserisci la watchlist nell'identità firmata

La watchlist fa parte di `member_data`, la stringa JSON che il tuo endpoint di autenticazione membro firma. Aggiungi gli id accanto all'identità:

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

Poiché la lista è dentro l'identità firmata, il tuo endpoint di autenticazione decide chi un membro può seguire: costruisci l'array dai tuoi dati (i suoi contatti, il suo team) anziché accettarne uno inviato dal client, altrimenti qualsiasi membro può seguire qualsiasi altro. Una watchlist contiene fino a 100 id; una lista più lunga viene troncata ai primi 100 e la connessione riceve l'errore `4302` con gli id accettati.

La lista viene acquisita al signin e resta valida per tutta la durata della connessione. Per modificarla, fai firmare la nuova lista al tuo endpoint: il client si autentica di nuovo automaticamente a ogni riconnessione, quindi la connessione successiva segue la lista aggiornata e riceve gli stati correnti.

## Ascoltare nel browser

Effettua il bind su `bird.member.watchlist`. Lo stato corrente dell'intera lista arriva subito dopo il signin, così puoi mostrare chi è online prima che qualcuno cambi stato:

```typescript
await bird.signin();

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

Ogni evento contiene gli id membro a cui si applica. La consegna iniziale dopo il signin copre l'intera lista, raggruppata per stato; dopodiché gli eventi arrivano quando i membri passano tra zero e una connessione.

## Watchlist o presence?

I canali presence rispondono a "who is in this room with me": tutti si iscrivono allo stesso canale e vedono la stessa lista di membri. Una watchlist risponde a "are the people I care about online anywhere": ogni membro segue la propria lista, e le persone seguite non devono fare nulla oltre ad autenticarsi. Una lista contatti, un indicatore di disponibilità agente o un nudge "your contact just came online" sono lavoro da watchlist; un roster di stanza condivisa è presence.

## Prossimi passi

- [Terminare le connessioni dei membri](/docs/guides/realtime/terminating-member-connections) tratta il signin e il contratto di identità in cui risiede la watchlist.
- [Canali presence](/docs/guides/realtime/presence-channels) per la membership di stanze condivise anziché liste di follow personali.
- [Inviare eventi a un membro](/docs/guides/realtime/sending-events-to-a-member) è l'altra superficie indirizzata al membro.

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