serde

package
v0.0.0-...-3d0ed7e Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 12, 2023 License: Apache-2.0 Imports: 3 Imported by: 0

Documentation

Index

Constants

View Source
const (
	Handshake   = 1    // 连接建立后, server主动发送handshake, 必须使用json序列化
	HandshakeRe = 2    // 链接建立后, client收到handshake后的回复协议, 指定client使用的序列化方法, 必须使用json序列化
	Heartbeat   = 3    // client定期发送心跳
	Kick        = 4    // server踢人
	UserBase    = 10   // 用户自定义的类型, 从这里开始
	RouteBase   = 5000 // 当kind值 >= RouteBase时, 就意味着存储的是route字符串, route字符器长度=(kind - RouteBase)
)

Variables

This section is empty.

Functions

func EncodePacket

func EncodePacket(writer *iox.OctetsWriter, pack Packet)

Types

type JsonHandshake

type JsonHandshake struct {
	Nonce     int32    `json:"nonce"`
	Heartbeat float32  `json:"heartbeat"` // 心跳间隔. 单位: 秒
	Routes    []string `json:"routes"`    // 有序的routes, 其kinds值从Userdata(1000)有序增加; 只所以这么做并不是为了省流量, 而是unity3d的JsonUtility不支持反序列化Dictionary
	Serdes    []string `json:"serdes"`    // 服务器支持的序列化方法
}

JsonHandshake handshake必须使用json做序列化与反序列化

type JsonHandshakeRe

type JsonHandshakeRe struct {
	Serde string `json:"serde"`
}

type JsonSerde

type JsonSerde struct {
}

func (*JsonSerde) Deserialize

func (s *JsonSerde) Deserialize(data []byte, v interface{}) error

func (*JsonSerde) GetName

func (s *JsonSerde) GetName() string

func (*JsonSerde) Serialize

func (s *JsonSerde) Serialize(v interface{}) ([]byte, error)

type Packet

type Packet struct {
	Kind      int32  // 自定义的类型从UserBase开始. 服务器push的消息是不需要handler的, 只需要route就可以 (当然, 为了优化也可以通过加一个handler引入一个kind)
	Route     []byte // kind >= RouteBase <=> Route有值; route需要是一个[]byte而不能是string, 因为需要在外围计算route的长度, 并赋值到kind, 计算前我们就已经拿到[]byte了
	RequestId int32  // 请求的rid, 用于client请求时定位response的handler
	Code      []byte // error code
	Data      []byte // 如果有error code, 则Data是error message; 否则Data是数据payload
}

func DecodePacket

func DecodePacket(reader *iox.OctetsReader) ([]Packet, error)

type Serde

type Serde interface {
	Serialize(v interface{}) ([]byte, error)
	Deserialize(data []byte, v interface{}) error
	GetName() string
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL