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
IxiBytes: See IxiBytes Encoding.
Payload Structure
The payload contains the unique ID of the message that is being acknowledged.
| Field | Data Type | Min | Max | Description |
|---|---|---|---|---|
confirmedMessageId | IxiBytes | 16 | 64 | The 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
StreamMessagewhere therequireRcvConfirmationflag istrue. - Sender's Action: Upon receiving a
msgReceivedconfirmation, 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
confirmedMessageIdvalues (e.g.,0x00,0x02) are used to advance the internal handshake state machine between two clients. - No Confirmation Required: The
StreamMessageenvelope for amsgReceivedmessage itself MUST haverequireRcvConfirmationset tofalseto prevent acknowledgment loops.