2.9 KiB
2.9 KiB
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
Common Header
———–—–—–—–—–—–—–—–
| 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 | … |
——————————–———–+
| ACK | ||||
| packet type |
||||
| 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
——-—————+
| bytes | 0 |
——-—————+
| common header |
——-—————+