Overview about message send process and delivery states #2537
HenrikJannsen
started this conversation in
General
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
When sending a direct message we show a message delivery state as icons and tooltips. In the process there are several steps where things can fail.
Most messages are supporting a ACK protocol, thus when the user receives an
AckRequestingMessage
message it has to send aAckMessage
back. This gives the sender feedback about the successful delivery.While sending we store the sent message locally, so that in case of a failure we can resend it.
Here an overview about the possible paths:
Both users online
CONNECTING
)SENT
)ACK_RECEIVED
)Peer who was just online went offline
SENT
)TRY_ADD_TO_MAILBOX
)ADDED_TO_MAILBOX
MAILBOX_MSG_RECEIVED
)Offline peer
CONNECTING
)TRY_ADD_TO_MAILBOX
)ADDED_TO_MAILBOX
MAILBOX_MSG_RECEIVED
)Failed due too fast close while connecting
CONNECTING
)CONNECTING
and show resend button as well we try to resend after a delay (better connectivity)Failed due too fast close while adding to mailbox
CONNECTING
)TRY_ADD_TO_MAILBOX
)TRY_ADD_TO_MAILBOX
and show resend button as well we try to resend after a delay (better connectivity)Other failure cases
If a failure happens at send we show the
FAILED
state. We show the resend buttonIf we have not received a ACK message after state
SENT
(expecting user is online), we also resend and show resend button at restart.[1] #2536
Beta Was this translation helpful? Give feedback.
All reactions