Real-time presence works based on periodic heartbeat requests coming from the user. The user sends those heartbeats every 30 seconds. and if Gist does not receive a heartbeat request in 2 minutes, then the user is considered offline.
Immediate detection of loss of connection is not ideal since users navigating between different pages on their browser would be shown as on and off repeatedly – the 30-second delay let Gist know that the connection has dropped and that the user is offline.
How does the user list update in real time?
When your user list automatically refreshes, it doesn't bring in new people, it just refreshes the status of who is already there. You will need to manually refresh to bring in new users.