Quick Reference - Listen for user presence changes:
Real-time Presence
In other words, as a logged-in user, how do I know if a user is online or offline? Based on the settings provided in the AppSettings class while initialising the SDK using theinit() method, the logged-in user will receive the presence for the other users in the app.
In the AppSettings class, you can set the type of Presence you wish to receive for that particular session of the app.
For presence subscription, the AppSettingsBuilder provides 3 methods :
subscribePresenceForAllUsers()- this will inform the logged-in user when any user in the app comes online or goes offlinesubscribePresenceForRoles(Array roles)- This will inform the logged-in user, only when the users with the specified roles come online or go offline.subscribePresenceForFriends()- This will inform the logged-in user, only when either of his friends come online or go offline.
UserListener using the addUserListener() method where ever you wish to receive these events in.
- JavaScript
- TypeScript
| Parameter | Description |
|---|---|
listenerID | An ID that uniquely identifies that listener. |
User class in the listener methods.
Presence events are triggered for other users, not for yourself. For example, if User 1 is logged in and User 2 comes online, User 1 receives
onUserOnline for User 2. Neither User 1 nor User 2 receive presence events for their own status changes — only for others.- JavaScript
- TypeScript
User List Presence
In other words, as a logged-in user, when I retrieve the user list, how do I know if a user is online/offline? When you fetch the list of users, in the User object, you will receive 2 fieldsstatus- This will hold either of the two values :
- online - This indicates that the user is currently online and available to chat.
- offline - This indicates that the user is currently offline and is not available to chat.
lastActiveAt- in case the user is offline, this field holds the timestamp of the time when the user was last online. This can be used to display the Last seen of the user if need be.
Best Practices
Choose the right presence subscription
Choose the right presence subscription
Use
subscribePresenceForAllUsers() only if your app needs to track all users. For most apps, subscribePresenceForFriends() or subscribePresenceForRoles() is more efficient and reduces unnecessary network traffic.Set presence subscription during init
Set presence subscription during init
Presence subscription is configured in
AppSettings during SDK initialization. You cannot change the subscription type without re-initializing the SDK. Plan your subscription strategy before calling init().Use lastActiveAt for 'Last seen' display
Use lastActiveAt for 'Last seen' display
When a user is offline, use the
lastActiveAt timestamp to show “Last seen X minutes ago” in your UI. This gives users context about when the person was last available.Troubleshooting
Presence events not received
Presence events not received
Verify that you configured a presence subscription method (
subscribePresenceForAllUsers, subscribePresenceForRoles, or subscribePresenceForFriends) in your AppSettings during init(). Without this, no presence events are delivered.onUserOnline fires but onUserOffline doesn't
onUserOnline fires but onUserOffline doesn't
Offline events are triggered when the SDK detects the user has disconnected. This may have a short delay depending on network conditions. The event will fire once the server confirms the user is offline.
Presence not updating for specific users
Presence not updating for specific users
If using
subscribePresenceForRoles(), ensure the target users have the specified roles assigned. If using subscribePresenceForFriends(), confirm the users are in each other’s friends list.