WuKongIM协议
WuKongIM 协议是一个高效的二进制通信协议,专为即时通讯场景设计。本文档详细描述了协议的报文结构、控制类型和编码规范。
📋 控制报文结构
每个 WuKongIM 控制报文都由以下三个部分组成:🔧 固定报头
每个 WuKongIM 控制报文都包含一个固定报头,用于标识报文类型和长度信息。📝 WuKongIM 控制报文类型
WuKongIM 协议定义了10种不同的控制报文类型,每种类型都有特定的用途和数据结构。
🏷️ 控制报文标志位
不同的协议报文使用不同的标志位来控制消息行为: Send和Recv协议中的标志位
Connack协议中的标志位
Chunk协议中的标志位
📏 剩余长度编码
编码规则:- 单个字节最大值:
01111111(0x7F, 127) - 第八位(最高位)为 1 表示还有后续字节
- 最多允许 4 个字节表示剩余长度
- 最大长度:
0xFF,0xFF,0xFF,0x7F= 268,435,455 byte = 256MB
编码理解:
- 第1字节基数:1
- 第2字节基数:128 (2^7)
- 第3字节基数:128×128 = 2^14
- 第4字节基数:128×128×128 = 2^21
11000001 00000010
🔤 字符串 UTF-8 编码
WuKongIM 采用修改版的 UTF-8 编码格式:🔄 可变报头
某些控制报文包含一个可变报头部分,位于固定报头和有效载荷之间。可变报头的内容根据报文类型的不同而不同。
📡 协议报文规范
🔌 CONNECT 连接报文
客户端向服务端发起连接请求时使用的报文格式。
✅ CONNACK 连接确认
📤 SEND 发送消息
客户端向服务端发送消息时使用的报文格式。
✅ SENDACK 发送消息确认
服务端对客户端发送消息的确认响应。
📥 RECV 收消息
服务端向客户端推送消息时使用的报文格式。
✅ RECVACK 收消息确认
客户端对服务端推送消息的确认响应。
🏓 PING
客户端发送的心跳请求报文,用于保持连接活跃。
🏓 PONG
服务端对客户端 PING 请求的响应报文。
🔌 DISCONNECT
📢 EVENT 事件通知
服务端向客户端推送事件通知时使用的报文格式。事件通知用于传递系统状态变化、用户行为通知等非消息类型的信息。
⚙️ 消息设置
📊 消息设置位字段
消息设置为 1 byte (8 bit),用于控制消息的各种行为特性。
🔧 设置位说明
完整协议文档: 本文档包含了 WuKongIM 协议的核心部分。完整的协议规范还包括 Payload 推荐结构、普通消息格式、系统消息格式等详细内容,请参考源文档获取完整信息。

