1. server send a 'save-request' to the client. client acknowledges sending back a status of the save (as before).
2. the client is not broadcasting SAVED anymore
3. the server send a broadcast message to all in room with event 'saved'
4. the client handles the 'saved' event and refetches
5. socket idle state is moved to a separate event 'idle-state' (the payload and handlers stay the same)
7. on the client, handling of idle state is moved from client-broadcast to its own event
---
9. when server detects idleness, it has to transfer them to read-only. The server send a event 'mode' to the concerned socket that the mode changed. The client handles it by updating the mode of Excalidraw and displaying a dialog/message.
10. this unlocks the possibility to listen on 'server-broadcast' and 'server-volatile-broadcast' about last activity.
11. When the socket is requesting to join a room, the server sends the computed mode of the client through the 'mode' event.
12. Server removes the `server-broadcast` listener on the socket and sets the `update` flag to `false`.
13. Remove `server-request-broadcast` event and its listener
14. whiteboard service uses an event emitter to notify about whiteboard updates