通讯报文列表
ACK_SC_ 既从服务端发到客户端(SC)的ACK报文
服务器询问客户端,要求注册:
客户端提交注册信息→服务端记录→返回注册成功→开始聊天
客户端未提交注册信息(超时ClientRegisterTimeOut)→服务端关闭当前连接
信息明细:
服务器要求注册 ACK_SC_REG_PING Message.TYPE = ACK Message.FLAG flag = 0
客户端注册信息 ACK_CS_REG_PONG Message.TYPE = ACK Message.FLAG flag = 1
所有MChat内的报文,都遵循以下格式
type 报文类型,枚举类型,包含:TEXT,LOCATION,VOICE,IMAGE,ACK,ERROR
version 版本号,32位整形
from 发送方ID,64位整形
to 接受方ID,64位整形
bytes 数据主体
flag = 6 标志位,16位, 用于代表各种协议代码
hash = 7 哈希, 16,用于对报文进行校验,
Head: 40 bytes
0-8: type | 8-15: version | 16-31 :hash | 32 - 63 : flag
64 - 127: from
128 - 191: to
192 - 255: data_length
256 - 257: time_to_live(default 1) | 258 - 139 : option
320 - (320 + data_length - 1) : data
报文到达: 1. 是否能直接转发给最终客户端: 1.1 是:进行权限验证(黑名单,白名单) 1.1.1 权限验证通过 1.1.1.1 转发 1.1.1.1.1 转发成功[end] 1.1.1.1.2 转发失败 1.1.2 权限验证不通过:退回,权限标志 1.2 否: 1.2.1 TTL - 1 >= 0 1.2.2 发起查询广播:哪一台主机有客户端连接? 1.2.2.1 收到主机答复 1.2.2.1.1 转发到目标机 1.2.3 收不到主机答复 1.2.3.1 转发到持久化 1.2.3 TTL -1 < 0 1.2.3.1 转发到持久化