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