Table of Contents
- Packet Format
- Common Header
- Types
- Shared Flags
- Handshake Packet
- Forward Packet
- Flags
- Payload
- Message Content map structure
- Heartbeat Packet
Packet Format
bytes
|
0
|
1
|
2
|
3
|
5
|
6 .. end
|
|
variable length
|
common header
|
payload
|
The length of the remaining part(common header + payload) is indicated by the Length Header of each packet
bits
|
0
|
1
|
2
|
3
|
4
|
5
|
6
|
7
|
|
packet type
|
shared flags
|
Types
type
|
usage
|
0
|
handshake
|
1
|
forward
|
2
|
heartbeat
|
Shared Flags
The usage of each bit is determined by the type of packet
Handshake Packet
bytes
|
0
|
1
|
|
common header
|
version
|
Forward Packet
bits
|
0
|
1
|
2
|
3
|
4
|
5
|
6
|
7
|
...
|
|
packet type
|
|
ACK
|
payload
|
forward flags
|
Flags
flag
|
usage
|
ACK
|
This packet need a ACK response
|
Payload
bytes
|
0
|
..
|
n
|
n+1
|
..
|
x
|
|
Content Length
|
Message Content
|
- Content length is a variable length number.
- Message content is a list in an opaque binary format whose element is a map structure
Message Content map structure
{
id: "0006081CCFF3D48F03C10000058B0000", // unique message id
qos: 1,
flags: {dup: false, retain: false},
from: "clientid",
topic: "t/1",
payload: "hello, world",
timestamp: 1697786555281
}
Heartbeat Packet