Presence
See who is connected to a channel: how presence is tracked, how long someone stays listed after disconnecting, several tabs and devices, and privacy.
Presence answers "who is here right now?" for a channel — online indicators, "3 people are viewing", collaborators in a document.
const here = await sovaria.realtime.presence('doc-1234')
// { channel: 'doc-1234', online_clients: ['…', '…'], count: 2 }How it is tracked
- Every open connection to the channel is listed while it is alive; connections heartbeat every 30 seconds.
- A connection that closes cleanly leaves the list at once. One that vanishes (network loss, crashed app) is removed after about 90 seconds without a heartbeat.
- Each tab or device is its own connection (its own client id), so one person can count several times. To show people, have each client publish a small "joined" message with its user id and keep a list.
- Poll presence when you need it (for example every 15–30 seconds), or publish your own "joined"/"left" messages for instant updates.
Privacy
Only callers allowed to subscribe to the channel can read its presence. Presence lists who is connected, not what they are doing; don't put personal data in channel names.
| Free | Pro | Ultra | Team | Enterprise | |
|---|---|---|---|---|---|
| Realtime presence | ✓ | ✓ | ✓ | ✓ | ✓ |
| Realtime connections per signed-in user | 20 | 50 | 100 | 200 | 500 |
Something unclear or missing on this page?Tell us