poker 网络消息处理文档

128 阅读1分钟

一 说明

该平台使用go语言, 基于开源框架pitayagames开发的一套分布式休闲游戏服务器

对客户端提供http,websocket接口,交互协议支持json,protobuf

二 服务器拓扑图

三 测试环境接入地址

gate地址: ws://101.37.163.172:9500

login地址: http://101.37.163.172:9000

四 websocket客户端接入说明

  1. 客户端在建立websocket连接后第一个包需发送ack包(兼任pitaya框架),再发送业务包。
  1. 数据包分为三种类型:ack包,data包,heart包,
  2. data包说明

data[0] = 0x04 固定填充0x04 代表data包

data[1: 4] = IntToBytes(DataLength) 3个字节 填充数据包长度(int转byte)

data[4] =客户端上行是notify消息固定填0x03 服务端下行是push消息固定填0x07

data[5] = byte((cmd>>8)&0xFF)

data[6] = byte(cmd&0xFF)

data[7 :N ] = pb_buff pb包序列化产生的buff ,pb_len为序列化产生的buff长度

注: cmd为主码

DataLength 为 data包第四个字节到末尾的长度

pb_buff 使用message Req 序列化产生

IntToBytes 算法如下

func IntToBytes(n int) []byte {
    buf := make([]byte, 3)
    buf[0] = byte((n >> 16) & 0xFF)
    buf[1] = byte((n >> 8) & 0xFF)
    buf[2] = byte(n & 0xFF)
    return buf
}
  1. ack包说明

data[0] = 0x02 第一个字节填充0x02 代表ack包

data[1:4] = 0x00 后三个字节填0

  1. heart包说明

data[0] = 0x03 第一个字节填充0x03 代表心跳包

data[1:4] = 0x00 后三个字节填0

  1. kick包说明

data[0] = 0x05 第一个字节填充0x05 代表被踢出

data[1:4] = 0x00 后三个字节填0