Skip to content
On this page

通信协议

心跳包

 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
+---------------------------------------------------------------+-+-------------+---------------------------------------------------------------+
|                              size                             |h|   extcode   |                      heartbeat time (ns)                      |
+---------------------------------------------------------------+-+-------------+---------------------------------------------------------------+
  • size: 4 bytes

    • 包长度位
    • 长度固定为4字节,且不可修改
  • header: 1 bytes

    • 包头标识

    • 长度固定为1字节,且不可修改

      • h: 1 bit

        • 心跳标识位
        • 长度固定为1位,且不可修改
        • 心跳包固定为%x1
      • extcode: 7 bit

        • 扩展操作码位
        • 长度固定为7位,且不可修改
        • 保留位
  • heartbeat time: 8 bytes

    • 服务端下行心跳时间
    • 上行心跳包无需携带心跳数据,下行心跳包默认携带8 bytes的服务器时间(ns)
    • 此协议数据由etc.packet.heartbeatTime配置参数进行控制

数据包

 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
+---------------------------------------------------------------+-+-------------+-------------------------------+-------------------------------+
|                              size                             |h|   extcode   |             route             |              seq              |
+---------------------------------------------------------------+-+-------------+-------------------------------+-------------------------------+
|                                                                message data ...                                                               |
+-----------------------------------------------------------------------------------------------------------------------------------------------+
  • size: 4 bytes

    • 包长度位
    • 长度固定为4字节,且不可修改
  • header: 1 bytes

    • 包头标识

    • 长度固定为1字节,且不可修改

      • h: 1 bit

        • 心跳标识位
        • 长度固定为1位,且不可修改
        • 数据包固定为%x0
      • extcode: 7 bit

        • 扩展操作码位
        • 长度固定为7位,且不可修改
        • 保留位
  • route: 1 bytes | 2 bytes | 4 bytes

    • 消息路由号
    • 长度默认为2字节,可通过打包器配置etc.packet.routeBytes进行修改
    • 此参数由业务打包器packet.Packer打包,服务器开发者和客户端开发者均要关心此参数
  • seq: 0 bytes | 1 bytes | 2 bytes | 4 bytes

    • 消息序列号
    • 长度默认为2字节,可通过打包器配置etc.packet.seqBytes进行修改
    • 可通过将打包器配置etc.packet.seqBytes设置为0来屏蔽使用消息序列号
    • 消息序列号常用于请求/响应模型的消息对儿的确认
    • 此参数由业务打包器packet.Packer打包,服务器开发者和客户端开发者均要关心此参数
  • message data: n bytes

    • 消息数据
    • 长度默认为5000字节,可通过打包器配置etc.packet.bufferBytes进行修改
    • 建议较大的消息包通过拆包的方式来进行发送,切勿盲目扩大消息数据的长度
    • 此参数由业务打包器packet.Packer打包,服务器开发者和客户端开发者均要关心此参数

其他语言的实现

通信协议 has loaded