msgReceived (9)

The msgReceived message serves as a transport-level acknowledgment. It confirms that a specific message, which had its requireRcvConfirmation flag set, has been successfully delivered to the recipient's device.

This is an automated response generated by the recipient's node and is crucial for ensuring reliable message delivery.

Core Data Types

Payload Structure

The payload contains the unique ID of the message that is being acknowledged.

FieldData TypeMinMaxDescription
confirmedMessageIdIxiBytes1664The unique ID (StreamMessage.id) of the message that has been successfully received.

Behavioral Notes

  • Automated Response: A node MUST automatically send this message upon receiving and successfully decrypting any StreamMessage where the requireRcvConfirmation flag is true.
  • Sender's Action: Upon receiving a msgReceived confirmation, the sender's client should update the status of the original message to "delivered". It also removes the original message from the pending queue, ceasing re-transmission attempts.
  • Handshake Significance: This message plays a role in the initial connection handshake. Specific confirmedMessageId values (e.g., 0x00, 0x02) are used to advance the internal handshake state machine between two clients.
  • No Confirmation Required: The StreamMessage envelope for a msgReceived message itself MUST have requireRcvConfirmation set to false to prevent acknowledgment loops.