## Android: - When an advisor marks themselves online, the Android app makes an API call to inform the server and opens a websocket connection. For as long as the server continues to receive these websocket connections, it will keep the advisor in the 'online' state. If n heartbeats are missed, the server will mark the advisor as offline, and send an FCM notification. - If the app does not receive n heartbeats from the server, it will move to the 'offline' state. - If the advisor marks themselves offline, an API call is made. ## iOS: - When advisor marks themselves online, the iOS app makes an API call to update the server. - When a call is routed to the advisor via push kit, the iOS makes an API call to confirm receipt. If this confirmation is not received in n seconds, the advisor is marked offline, and another pushkit notification sent to the advisor. - When adivosr marks themselves offline, another API call is made.