This repository has been archived on 2022-08-19. You can view files and clone it, but cannot push or open issues or pull requests.
hydrogen-web/doc/impl-thoughts/RECONNECTING.md
Bruno Windels ef267ca331 WIP2
2020-04-05 15:11:15 +02:00

1.1 KiB

Reconnecting

HomeServerApi notifies Reconnector of network call failure

Reconnector listens for online/offline event

Reconnector polls /versions with a RetryDelay (implemented as ExponentialRetryDelay, also used by SendScheduler if no retry_after_ms is given)

Reconnector emits an event when sync and message sending should retry

Sync listen to Reconnector Sync notifies when the catchup sync has happened

Reconnector has state: - disconnected (and retrying at x seconds from timestamp) - reconnecting (call /versions, and if successful /sync) - connected

Reconnector has a method to try to connect now

SessionStatus can be: - disconnected (and retrying at x seconds from timestamp) - reconnecting - connected (and syncing)

- doing catchup sync
- sending x / y messages

rooms should report how many messages they have queued up, and each time they sent one?

SendReporter (passed from Session to Room, passed down to SendQueue), with:

  • setPendingEventCount(roomId, count)

Session listens to Reconnector to update it's status, but perhaps we wait to send messages until catchup sync is done