Smalldok's Tech Blog

穷则变、变则通、通则达


  • 首页

  • 分类

  • 关于

  • 标签

  • 归档

  • 公益 404

  • 搜索

消息类型和消息协议

| 分类于 源码学习 , MPush , 架构分析 | 评论数: | 阅读次数:

消息类型

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
public enum Command {
HEARTBEAT(1), // 心跳
HANDSHAKE(2), // 握手
LOGIN(3),
LOGOUT(4),
BIND(5), // 绑定用户
UNBIND(6), // 解绑用户
FAST_CONNECT(7), // 快速重连
PAUSE(8),
RESUME(9),
ERROR(10), // 错误消息
OK(11), // 成功消息
HTTP_PROXY(12), // HTTP代理
KICK(13), // 踢人
GATEWAY_KICK(14),
PUSH(15), // 推送
GATEWAY_PUSH(16),
NOTIFICATION(17),
GATEWAY_NOTIFICATION(18),
CHAT(19),
GATEWAY_CHAT(20),
GROUP(21),
GATEWAY_GROUP(22),
ACK(23),
UNKNOWN(-1);
}

消息协议

  • mpush使用的为自定义私有协议,定长Header + body, 其中header部分固定13个字节。
  • 心跳固定为一个字节,值为 -33。
名称 类型 长度 说明
length int 4 表示body的长度
cmd byte 1 表示消息协议类型
checkcode short 2 是根据body生成的一个校验码
flags byte 1 表示当前包启用的特性,比如是否启用加密,是否启用压缩
sessionId int 4 消息会话标识用于消息响应
lrc byte 1 纵向冗余校验,用于校验header
body byte 不固定 消息内容
1…171819…100
smalldok

smalldok

JAVA服务端架构,目前方向是微服务落地、基础设施、中间件、DevOps

100 日志
27 分类
17 标签
Links
  • sofa-bolt
  • sofa-rpc
  • dubbo
  • sofa-tracer
  • sofa-boot
  • Sentinel
  • COLA
  • nacos
  • xxl-job
  • apollo
  • sharding-sphere
  • fescar
  • ByteTCC
  • tcc-transaction
  • rocketmq
  • canal
  • arthas
  • jvm-sandbox
  • sofa-lookout
  • disruptor
  • mpush
© 2007 – 2019 smalldok
由 Hexo 强力驱动 v3.8.0
|
主题 – NexT.Mist v6.7.0