数据包类型
查阅 WKProto FrameType 值、方向、核心字段和当前发布范围。
FrameType 位于固定 Header 的高四位。UNKNOWN=0 是保留值,不能发送;枚举存在也不代表产品 Gateway 已支持该包。
| 值 / 名称 | 方向 | 范围 | 说明 |
|---|---|---|---|
0 · UNKNOWN | — | 保留 | Wire 保留值;不得发送,也不进入产品处理。 |
1 · CONNECT | 客户端 → 服务端 | 公共核心 | 必须是连接上的唯一首包。 |
2 · CONNACK | 服务端 → 客户端 | 公共核心 | 返回连接结果和会话材料;v4+ 请求另带协商版本。 |
3 · SEND | 客户端 → 服务端 | 公共核心 | 提交一条 Channel 消息。 |
4 · SENDACK | 服务端 → 客户端 | 公共核心 | 关联 SEND 并返回协议结果。 |
5 · RECV | 服务端 → 客户端 | 公共核心 | 向当前 Session 投递一条消息。 |
6 · RECVACK | 客户端 → 服务端 | 公共核心 | 确认客户端处理了指定 RECV。 |
7 · PING | 客户端 → 服务端 | 公共核心 | 刷新入站活动并请求 PONG。 |
8 · PONG | 服务端 → 客户端 | 公共核心 | 无正文的 PING 响应。 |
9 · DISCONNECT | 客户端 ↔ 服务端 | 仅编解码 | 双向 codec 合同;当前产品 Gateway 未发布客户端入站或服务端发送语义。 |
10 · SUB | 客户端 → 服务端 | 仅编解码 | 存在编解码器;当前产品 Gateway 入站未支持。 |
11 · SUBACK | 服务端 → 客户端 | 仅编解码 | SUB 的编解码响应;当前产品入口未发布。 |
12 · EVENT | 客户端 ↔ 服务端 | 保留 | 当前产品 Gateway 仅用于 benchmark terminal-fence 请求与确认;不是应用事件 API。 |
核心字段
| 包 | 正文字段 |
|---|---|
CONNECT | version、client_key、device_id、device_flag、毫秒时间戳、uid、token |
CONNACK | v4+ 请求的协商版本、server_key、salt、时间差、Reason Code、v4+ node_id |
SEND | Setting、32 位 Wire client_seq、client_msg_no、Channel、v3+ expire、msg_key、可选 Topic、Payload |
SENDACK | message_id、client_seq、message_seq、Reason Code、可选 client_msg_no |
RECV | Setting、msg_key、发送者、Channel、v3+ expire、client_msg_no、message_id、message_seq、秒级时间戳、可选 Topic、Payload |
RECVACK | message_id、message_seq |
PING / PONG | 无正文;整个包只有一个固定 Header 字节 |
协议 v5 及以下使用 32 位 message_seq,v6 使用 64 位;client_seq 的 Wire 宽度始终为 32 位。当前编码器限制 SEND Payload 最多 32767 字节;解码器拒绝 remaining length 超过 1 MiB 的帧。
固定 Header 与 Setting 位见 Message Flags,设备值见 Device Flag,Channel 数值见 Channel Type,结果见 Reason Code。
不要使用未发布的包
当前产品 Gateway 不接受普通 DISCONNECT、SUB 或任意 EVENT 入站;EVENT 只用于 benchmark terminal-fence。UNKNOWN=0 不进入产品处理;未知数值、畸形帧或已解码但未发布的包通过协议错误、处理器错误或有界超时 fail closed。