

message
route/protobuf 压缩package 层package
tcp,websocket 等协议传输发包
Message > Protobuf/JSON Encoder > Nano Message Encoder > Nano Packet Encoder解包
Nano Packet Decoder > Nano Message Decoder > Protobuf/JSON Decoder > Message封装在面向连接的二进制流的通讯协议
应用层面的控制流程
header0x01 客户端到服务器的握手请求以及服务器到客户端的握手响应0x02 客户端到服务器的握手ack0x03 心跳包0x04 数据包0x05 服务器主动断开连接通知bodyuser 用户自定义部分sys.version 客户端的版本号sys.type 客户端的类型heartbeat 可选,心跳时间间隔(秒)dict 可选,route 字段压缩的映射表protos 可选,protobuf压缩的数据定义200 成功500 失败501 客户端版本号不符合codesysuser—> handshake request(client)<— handshake response(server)—> handshake ack(client)—> heartbeat Client<— heartbeat(wait heartbeat interval)Sever—> next heartbeat (wait heartbeat interval)Client主要作用是封装消息头
flag(1byte)它决定了后面的消息类型和内容的格式preserved(4 bits)预留4位message type(3 bits)范围为0~7route(1 bit) 表示 route 是否压缩,影响 route 字段的长度message id(0~5 bytes)varints 128变长编码,根据值的大小route(0~256 bytes)根据消息类型以及内容的大小flag 字段的第 2-4 位来确定
request----000- | <message id> | <route>notify----001- | <route>response----010- | <message id>push----011- | <route>[-------0] (flag)<length>1 byte | <utf8 string> (route)[-------1] (flag)<route code> (2 bytes)官方文档: