Documentation
¶
Index ¶
- Variables
- func ReleaseMessage(msg *DefaultMessage)
- type Client
- func (c *Client) AvailableConns() int
- func (c *Client) Close() error
- func (c *Client) Conn() Conn
- func (c *Client) Connect(addr string) error
- func (c *Client) HandleHeartbeat(conn Conn, msg Message)
- func (c *Client) IsClosed() bool
- func (c *Client) OnConnect(fn func(Conn))
- func (c *Client) OnDisconnect(fn func(Conn))
- func (c *Client) OnError(fn func(error))
- func (c *Client) PoolSize() int
- func (c *Client) RegisterHeartbeat(router *Router)
- func (c *Client) Send(msg Message) error
- func (c *Client) SendBytes(data []byte) error
- func (c *Client) SetCodec(codec Codec)
- func (c *Client) SetRouter(router *Router)
- func (c *Client) Stats() ClientStats
- type ClientStats
- type Codec
- type Conn
- type ConnManager
- func (m *ConnManager) Add(conn Conn) bool
- func (m *ConnManager) BroadcastBytes(data []byte) int
- func (m *ConnManager) BroadcastBytesFilter(data []byte, filter func(Conn) bool) int
- func (m *ConnManager) BroadcastBytesTo(data []byte, ids []string) int
- func (m *ConnManager) CloseAll()
- func (m *ConnManager) Count() int
- func (m *ConnManager) Get(connID string) (Conn, bool)
- func (m *ConnManager) GetAll() []Conn
- func (m *ConnManager) Remove(connID string)
- type ConnType
- type DefaultMessage
- type GWSConfig
- type GWSPermessageDeflateConfig
- type Group
- type Handler
- type KCPConfig
- type LineCodec
- func (c *LineCodec) DecodeBody(routeID uint32, body []byte) (Message, error)
- func (c *LineCodec) DecodeHeader(header []byte) (uint32, int, error)
- func (c *LineCodec) Encode(msg Message) ([]byte, error)
- func (c *LineCodec) HeaderSize() int
- func (c *LineCodec) MaxPacketSize() int
- func (c *LineCodec) ScanLine(data []byte) (Message, int, error)
- type Logger
- type Message
- type Middleware
- func Auth(authFunc func(conn Conn) bool, logger Logger) Middleware
- func Chain(mws ...Middleware) Middleware
- func Logging(logger Logger) Middleware
- func RateLimit(r float64, burst int, logger Logger) Middleware
- func Recovery(logger Logger) Middleware
- func Validate(validateFunc func(msg Message) error, logger Logger) Middleware
- type Router
- func (r *Router) Get(routeID uint32) Handler
- func (r *Router) Group(prefix uint32, mws ...Middleware) *Group
- func (r *Router) Handle(conn Conn, msg Message)
- func (r *Router) Register(routeID uint32, handler Handler)
- func (r *Router) RegisterMultiple(handlers map[uint32]Handler)
- func (r *Router) Remove(routeID uint32)
- func (r *Router) RouteCount() int
- func (r *Router) SetNotFoundHandler(handler Handler)
- func (r *Router) Use(mw ...Middleware)
- type Server
- func (s *Server) Broadcast(msg Message, ids ...string)
- func (s *Server) BroadcastFilter(msg Message, filter func(Conn) bool)
- func (s *Server) ConnCount() int
- func (s *Server) GetConfig() *ServerConfig
- func (s *Server) GetConnManager() *ConnManager
- func (s *Server) OnConnect(fn func(Conn))
- func (s *Server) OnDisconnect(fn func(Conn))
- func (s *Server) OnError(fn func(Conn, error))
- func (s *Server) RegisterHeartbeat(router *Router)
- func (s *Server) RegisterWSRoute(path string, upgrader *WebSocketUpgrader)
- func (s *Server) Run() error
- func (s *Server) SendTo(connID string, msg Message) error
- func (s *Server) SetCodec(codec Codec)
- func (s *Server) SetLogger(logger Logger)
- func (s *Server) SetRouter(router *Router)
- func (s *Server) Stats() ServerStats
- func (s *Server) Stop() error
- type ServerConfig
- type ServerOption
- func WithAddress(addr string) ServerOption
- func WithCodec(codec Codec) ServerOption
- func WithConnType(t ConnType) ServerOption
- func WithGWSConfig(cfg *GWSConfig) ServerOption
- func WithHeartbeat(interval, timeout time.Duration) ServerOption
- func WithHeartbeatPongData(fn func(ping Message) []byte) ServerOption
- func WithHeartbeatRouteID(pingID, pongID uint32) ServerOption
- func WithIDGenerator(fn func() string) ServerOption
- func WithKCPConfig(cfg *KCPConfig) ServerOption
- func WithLogger(logger Logger) ServerOption
- func WithMaxConnections(max int) ServerOption
- func WithPoolSize(n int) ServerOption
- func WithReadBufferSize(size int) ServerOption
- func WithReadTimeout(timeout time.Duration) ServerOption
- func WithReconnect(enable bool) ServerOption
- func WithReconnectDelay(initDelay, maxDelay time.Duration) ServerOption
- func WithReconnectMaxAttempts(n int) ServerOption
- func WithWriteBufferSize(size int) ServerOption
- func WithWriteTimeout(timeout time.Duration) ServerOption
- type ServerStats
- type SimpleCodec
- func (c *SimpleCodec) DecodeBody(routeID uint32, body []byte) (Message, error)
- func (c *SimpleCodec) DecodeHeader(header []byte) (routeID uint32, bodyLen int, err error)
- func (c *SimpleCodec) Encode(msg Message) ([]byte, error)
- func (c *SimpleCodec) HeaderSize() int
- func (c *SimpleCodec) MaxPacketSize() int
- type StdLogger
- type TLVCodec
- type TLVMessage
- type WebSocketUpgrader
Constants ¶
This section is empty.
Variables ¶
var ( // ErrConnClosed 连接已关闭 ErrConnClosed = errors.New("connection closed") // ErrServerClosed 服务器已关闭 ErrServerClosed = errors.New("server closed") // ErrInvalidMessage 无效消息 ErrInvalidMessage = errors.New("invalid message") // ErrCodecNotSet 编解码器未设置 ErrCodecNotSet = errors.New("codec not set") // ErrRouterNotSet 路由器未设置 ErrRouterNotSet = errors.New("router not set") // ErrMaxConnections 达到最大连接数 ErrMaxConnections = errors.New("max connections reached") // ErrListenFailed 监听失败 ErrListenFailed = errors.New("listen failed") // ErrAcceptFailed 接受连接失败 ErrAcceptFailed = errors.New("accept connection failed") // ErrTimeout 超时 ErrTimeout = errors.New("timeout") // ErrPacketTooLarge 数据包太大 ErrPacketTooLarge = errors.New("packet too large") // ErrInvalidPacket 无效数据包 ErrInvalidPacket = errors.New("invalid packet") // ErrUnsupportedProtocol 不支持的协议 ErrUnsupportedProtocol = errors.New("unsupported protocol") // ErrSendChannelFull 发送通道已满 ErrSendChannelFull = errors.New("send channel full") // ErrNoAvailableConn 连接池中无可用连接 ErrNoAvailableConn = errors.New("no available connection in pool") )
Functions ¶
Types ¶
type Client ¶
type Client struct {
// contains filtered or unexported fields
}
Client 网络客户端(连接池 + 断线重连)
func (*Client) AvailableConns ¶ added in v1.0.19
AvailableConns 返回当前可用(已连接)的连接数
func (*Client) HandleHeartbeat ¶ added in v1.0.9
HandleHeartbeat 客户端收到 Pong 时调用,更新心跳时间戳 需要在客户端 Router 中注册 HeartbeatPongID 路由时调用此函数
func (*Client) RegisterHeartbeat ¶ added in v1.0.9
RegisterHeartbeat 向 Router 注册客户端心跳 Pong 处理器
type ClientStats ¶ added in v1.0.19
type ClientStats struct {
// PoolSize 连接池槽位总数
PoolSize int
// AvailableConns 当前可用(已连接)的连接数
AvailableConns int
// TotalReconnects 累计重连次数
TotalReconnects int64
// TotalMessages 累计处理的消息数
TotalMessages int64
// TotalRecvBytes 累计接收字节数
TotalRecvBytes int64
// TotalSendBytes 累计发送字节数
TotalSendBytes int64
}
ClientStats 客户端统计快照
type Codec ¶
type Codec interface {
// Encode 编码消息为字节流
Encode(msg Message) ([]byte, error)
// HeaderSize 返回固定 header 字节数
HeaderSize() int
// DecodeHeader 解析 header,返回 routeID 和 body 长度
DecodeHeader(header []byte) (routeID uint32, bodyLen int, err error)
// DecodeBody 将 body 字节解析为消息
DecodeBody(routeID uint32, body []byte) (Message, error)
// MaxPacketSize 返回允许的最大包大小(header + body)
MaxPacketSize() int
}
Codec 编解码器接口,采用两阶段解码:先解 header 得到 body 长度,再读 body。
type Conn ¶
type Conn interface {
// ID 返回连接唯一标识
ID() string
// Type 返回连接类型
Type() ConnType
// LocalAddr 返回本地地址
LocalAddr() net.Addr
// RemoteAddr 返回远程地址
RemoteAddr() net.Addr
// Send 发送消息
Send(msg Message) error
// SendBytes 发送原始字节数据
SendBytes(data []byte) error
// Close 关闭连接
Close() error
// IsClosed 检查连接是否已关闭
IsClosed() bool
// SetReadDeadline 设置读取超时
SetReadDeadline(t time.Time) error
// SetWriteDeadline 设置写入超时
SetWriteDeadline(t time.Time) error
// Context 返回连接的上下文
Context() context.Context
// SetValue 存储键值对到连接上下文
SetValue(key, value interface{})
// GetValue 从连接上下文获取值
GetValue(key interface{}) (interface{}, bool)
}
Conn 连接接口,统一封装 TCP/WebSocket/KCP
type ConnManager ¶
type ConnManager struct {
// contains filtered or unexported fields
}
ConnManager 分片锁连接管理器 32 个分片,按连接 ID 首字节哈希,锁竞争降低为原来的 1/32
func (*ConnManager) BroadcastBytes ¶
func (m *ConnManager) BroadcastBytes(data []byte) int
BroadcastBytes 广播原始字节到所有连接,返回成功入队的连接数
func (*ConnManager) BroadcastBytesFilter ¶ added in v1.0.25
func (m *ConnManager) BroadcastBytesFilter(data []byte, filter func(Conn) bool) int
BroadcastBytesFilter 广播原始字节到满足条件的连接,filter 为 nil 则广播到所有连接,返回成功入队的连接数
func (*ConnManager) BroadcastBytesTo ¶ added in v1.0.23
func (m *ConnManager) BroadcastBytesTo(data []byte, ids []string) int
BroadcastBytesTo 广播原始字节到指定 ID 的连接,返回成功入队的连接数
type DefaultMessage ¶
type DefaultMessage struct {
// contains filtered or unexported fields
}
DefaultMessage 默认消息实现
type GWSConfig ¶ added in v1.0.14
type GWSConfig struct {
// ReadBufferSize 读取缓冲区大小。
ReadBufferSize int `mapstructure:"read_buffer_size" json:"read_buffer_size" yaml:"read_buffer_size"`
// ReadMaxPayloadSize 读取最大负载大小。
ReadMaxPayloadSize int `mapstructure:"read_max_payload_size" json:"read_max_payload_size" yaml:"read_max_payload_size"`
// WriteBufferSize 写入缓冲区大小(gws 已废弃该参数,建议留空)。
WriteBufferSize int `mapstructure:"write_buffer_size" json:"write_buffer_size" yaml:"write_buffer_size"`
// WriteMaxPayloadSize 写入最大负载大小。
WriteMaxPayloadSize int `mapstructure:"write_max_payload_size" json:"write_max_payload_size" yaml:"write_max_payload_size"`
// ParallelEnabled 是否启用并行处理。
ParallelEnabled bool `mapstructure:"parallel_enabled" json:"parallel_enabled" yaml:"parallel_enabled"`
// ParallelGolimit 并行协程限制,<=0 表示不限制。
ParallelGolimit int `mapstructure:"parallel_golimit" json:"parallel_golimit" yaml:"parallel_golimit"`
// CheckUtf8Enabled 是否启用 UTF-8 检查。
CheckUtf8Enabled bool `mapstructure:"check_utf8_enabled" json:"check_utf8_enabled" yaml:"check_utf8_enabled"`
// HandshakeTimeout 握手超时时间。
HandshakeTimeout time.Duration `mapstructure:"handshake_timeout" json:"handshake_timeout" yaml:"handshake_timeout"`
// SubProtocols WebSocket 子协议列表。
SubProtocols []string `mapstructure:"sub_protocols" json:"sub_protocols" yaml:"sub_protocols"`
// ResponseHeader 握手时附加的响应头。
ResponseHeader http.Header `mapstructure:"response_header" json:"response_header" yaml:"response_header"`
// PermessageDeflate 压缩扩展配置。
PermessageDeflate GWSPermessageDeflateConfig `mapstructure:"permessage_deflate" json:"permessage_deflate" yaml:"permessage_deflate"`
// Recovery 自定义 panic 恢复函数,为 nil 时使用 gws.Recovery。
Recovery func(logger gws.Logger) `mapstructure:"-" json:"-" yaml:"-"`
// Authorize 自定义鉴权函数,为 nil 时允许所有请求。
Authorize func(r *http.Request, session gws.SessionStorage) bool `mapstructure:"-" json:"-" yaml:"-"`
// NewSession 自定义 SessionStorage 工厂,为 nil 时使用 gws 默认实现。
NewSession func() gws.SessionStorage `mapstructure:"-" json:"-" yaml:"-"`
// OnPing 收到 WebSocket ping 帧时的回调。
// 返回的 payload 会作为 pong 帧回复给对端;为 nil 时使用默认空 pong。
OnPing func(payload []byte) []byte `mapstructure:"-" json:"-" yaml:"-"`
// OnPong 收到 WebSocket pong 帧时的回调。
OnPong func(payload []byte) `mapstructure:"-" json:"-" yaml:"-"`
}
GWSConfig 用于配置 gws 服务端选项。 零值或 nil 表示使用 msock 的默认行为(与 ServerConfig 中的缓冲区大小保持一致)。
func DefaultGWSConfig ¶ added in v1.0.14
func DefaultGWSConfig() *GWSConfig
DefaultGWSConfig 返回与历史默认行为一致的 GWS 配置。
type GWSPermessageDeflateConfig ¶ added in v1.0.14
type GWSPermessageDeflateConfig struct {
// Enabled 是否开启压缩。
Enabled bool `mapstructure:"enabled" json:"enabled" yaml:"enabled"`
// Level 压缩级别。
Level int `mapstructure:"level" json:"level" yaml:"level"`
// Threshold 压缩阈值,长度小于阈值的消息不会被压缩。
Threshold int `mapstructure:"threshold" json:"threshold" yaml:"threshold"`
// PoolSize 压缩器内存池大小。
PoolSize int `mapstructure:"pool_size" json:"pool_size" yaml:"pool_size"`
// ServerContextTakeover 服务端上下文接管。
ServerContextTakeover bool `mapstructure:"server_context_takeover" json:"server_context_takeover" yaml:"server_context_takeover"`
// ClientContextTakeover 客户端上下文接管。
ClientContextTakeover bool `mapstructure:"client_context_takeover" json:"client_context_takeover" yaml:"client_context_takeover"`
// ServerMaxWindowBits 服务端滑动窗口指数(8~15)。
ServerMaxWindowBits int `mapstructure:"server_max_window_bits" json:"server_max_window_bits" yaml:"server_max_window_bits"`
// ClientMaxWindowBits 客户端滑动窗口指数(8~15)。
ClientMaxWindowBits int `mapstructure:"client_max_window_bits" json:"client_max_window_bits" yaml:"client_max_window_bits"`
}
GWSPermessageDeflateConfig 是 gws.PermessageDeflate 的可配置子集。
type Group ¶
type Group struct {
// contains filtered or unexported fields
}
Group 路由组
type KCPConfig ¶
type KCPConfig struct {
// 发送窗口大小
SendWindow int
// 接收窗口大小
RecvWindow int
// 数据包最大传输单元
Mtu int
// 是否启用 FEC
EnableFEC bool
// FEC 数据分片数
DataShards int
// FEC 校验分片数
ParityShards int
// 是否启用加密
EnableCrypt bool
// 加密密钥(EnableCrypt 为 true 时必填)
CryptKey string
// 以下对应 kcp.UDPSession.SetNoDelay 的四个参数
// NoDelay: 0=关闭,1=开启 nodelay 模式
NoDelay int
// Interval: 内部刷新时间间隔(毫秒)
Interval int
// Resend: 快速重传模式,0=关闭,2=推荐值
Resend int
// NC: 是否关闭流量控制,0=开启,1=关闭
NC int
}
KCPConfig KCP配置
type LineCodec ¶
type LineCodec struct {
// contains filtered or unexported fields
}
LineCodec 文本行编解码器,适用于文本协议(如 Telnet) 因行长度不固定,HeaderSize 返回 0,bufferedReader 走流式扫描路径。
func (*LineCodec) DecodeBody ¶ added in v1.0.9
DecodeBody 不适用于 LineCodec
func (*LineCodec) DecodeHeader ¶ added in v1.0.9
DecodeHeader 不适用于 LineCodec,始终返回错误
func (*LineCodec) HeaderSize ¶ added in v1.0.9
HeaderSize 返回 0,表示使用流式扫描而非固定 header
type Logger ¶
type Logger interface {
Debug(msg string, args ...any)
Info(msg string, args ...any)
Warn(msg string, args ...any)
Error(msg string, args ...any)
}
Logger 日志接口,统一使用 slog 风格。
type Message ¶
type Message interface {
// RouteID 返回路由ID,用于消息路由
RouteID() uint32
// Data 返回消息数据
Data() []byte
// SetData 设置消息数据
SetData([]byte)
}
Message 消息接口
type Middleware ¶
Middleware 中间件函数
func Auth ¶
func Auth(authFunc func(conn Conn) bool, logger Logger) Middleware
Auth 认证中间件示例(需要配合连接上下文使用)
type Router ¶
type Router struct {
// contains filtered or unexported fields
}
Router 消息路由器
func (*Router) Group ¶
func (r *Router) Group(prefix uint32, mws ...Middleware) *Group
Group 创建路由组,可以设置统一的前缀和中间件 prefix: 路由ID前缀,组内所有路由ID都会与该前缀组合
func (*Router) RegisterMultiple ¶
RegisterMultiple 批量注册消息处理器
func (*Router) SetNotFoundHandler ¶
SetNotFoundHandler 设置未找到路由时的处理器
type Server ¶
type Server struct {
BusinessWg sync.WaitGroup // 业务方在 handler 内异步 goroutine 的生命周期管理
// contains filtered or unexported fields
}
Server 网络服务器
func (*Server) BroadcastFilter ¶ added in v1.0.25
BroadcastFilter 广播消息到满足条件的连接,filter 为 nil 则广播到所有连接
func (*Server) GetConnManager ¶
func (s *Server) GetConnManager() *ConnManager
GetConnManager 获取连接管理器
func (*Server) RegisterHeartbeat ¶ added in v1.0.9
RegisterHeartbeat 向 Router 注册心跳处理器,需在 SetRouter 之后调用
func (*Server) RegisterWSRoute ¶
func (s *Server) RegisterWSRoute(path string, upgrader *WebSocketUpgrader)
RegisterWSRoute 注册WebSocket处理路由(如果使用HTTP路由)
type ServerConfig ¶
type ServerConfig struct {
// 地址
Address string
// 连接类型
ConnType ConnType
// 编解码器
Codec Codec
// 日志器
Logger Logger
// 读取缓冲区大小
ReadBufferSize int
// 写入缓冲区大小
WriteBufferSize int
// 最大连接数
MaxConnections int
// 读超时
ReadTimeout time.Duration
// 写超时
WriteTimeout time.Duration
// 心跳间隔(服务端:检测周期;客户端:发送周期)
HeartbeatInterval time.Duration
// 心跳超时(超过此时间未收到心跳则断开)
HeartbeatTimeout time.Duration
// 心跳 Ping 路由ID
HeartbeatPingID uint32
// 心跳 Pong 路由ID
HeartbeatPongID uint32
// 心跳 Pong 内容生成函数,入参为收到的 ping 消息,返回 pong body;为 nil 时 pong body 为空
HeartbeatPongData func(ping Message) []byte
// KCP 配置,ConnType 为 ConnTypeKCP 时生效
KCPConfig *KCPConfig
// GWS 配置,ConnType 为 ConnTypeGWS 时生效
GWSConfig *GWSConfig
// PoolSize 客户端连接池大小,默认 1
PoolSize int
// ReconnectEnable 断线后是否自动重连
ReconnectEnable bool
// ReconnectInitDelay 首次重连等待时间,默认 1s
ReconnectInitDelay time.Duration
// ReconnectMaxDelay 最大重连等待时间(指数退避上限),默认 30s
ReconnectMaxDelay time.Duration
// ReconnectMaxAttempts 最大重连次数,0 表示无限重试
ReconnectMaxAttempts int
// IDGenerator 连接 ID 生成函数,默认使用 UUID
IDGenerator func() string
}
ServerConfig 服务器配置
type ServerOption ¶
type ServerOption func(*ServerConfig)
ServerOption 服务器配置选项
func WithGWSConfig ¶ added in v1.0.14
func WithGWSConfig(cfg *GWSConfig) ServerOption
WithGWSConfig 设置 gws 服务端配置
func WithHeartbeat ¶
func WithHeartbeat(interval, timeout time.Duration) ServerOption
WithHeartbeat 设置心跳参数
func WithHeartbeatPongData ¶ added in v1.0.9
func WithHeartbeatPongData(fn func(ping Message) []byte) ServerOption
WithHeartbeatPongData 设置 pong 内容生成函数 fn 入参为收到的 ping 消息,返回值作为 pong 的 body
func WithHeartbeatRouteID ¶ added in v1.0.9
func WithHeartbeatRouteID(pingID, pongID uint32) ServerOption
WithHeartbeatRouteID 设置心跳包的路由ID
func WithIDGenerator ¶ added in v1.0.20
func WithIDGenerator(fn func() string) ServerOption
WithIDGenerator 设置连接 ID 生成函数
func WithKCPConfig ¶ added in v1.0.9
func WithKCPConfig(cfg *KCPConfig) ServerOption
WithKCPConfig 设置 KCP 配置
func WithPoolSize ¶ added in v1.0.19
func WithPoolSize(n int) ServerOption
WithPoolSize 设置客户端连接池大小(最小为 1)
func WithReadBufferSize ¶
func WithReadBufferSize(size int) ServerOption
WithReadBufferSize 设置读取缓冲区大小
func WithReadTimeout ¶
func WithReadTimeout(timeout time.Duration) ServerOption
WithReadTimeout 设置读超时
func WithReconnect ¶ added in v1.0.19
func WithReconnect(enable bool) ServerOption
WithReconnect 设置是否启用断线重连
func WithReconnectDelay ¶ added in v1.0.19
func WithReconnectDelay(initDelay, maxDelay time.Duration) ServerOption
WithReconnectDelay 设置断线重连的初始等待时间和最大等待时间
func WithReconnectMaxAttempts ¶ added in v1.0.19
func WithReconnectMaxAttempts(n int) ServerOption
WithReconnectMaxAttempts 设置最大重连次数(0 表示无限重试)
func WithWriteBufferSize ¶
func WithWriteBufferSize(size int) ServerOption
WithWriteBufferSize 设置写入缓冲区大小
func WithWriteTimeout ¶
func WithWriteTimeout(timeout time.Duration) ServerOption
WithWriteTimeout 设置写超时
type ServerStats ¶ added in v1.0.19
type ServerStats struct {
// CurrentConns 当前连接数
CurrentConns int64
// TotalConns 累计建立的连接数
TotalConns int64
// TotalMessages 累计处理的消息数
TotalMessages int64
// TotalRecvBytes 累计接收字节数
TotalRecvBytes int64
// TotalSendBytes 累计发送字节数
TotalSendBytes int64
}
ServerStats 服务端统计快照
type SimpleCodec ¶
type SimpleCodec struct {
// contains filtered or unexported fields
}
SimpleCodec 简单编解码器 包格式: [4字节totalLen(大端)] + [4字节routeID(大端)] + [body] header = 8字节,totalLen 包含自身
func NewSimpleCodec ¶
func NewSimpleCodec(maxPacketSize ...int) *SimpleCodec
NewSimpleCodec 创建简单编解码器,maxPacketSize 默认 64KB
func (*SimpleCodec) DecodeBody ¶ added in v1.0.9
func (c *SimpleCodec) DecodeBody(routeID uint32, body []byte) (Message, error)
DecodeBody 将 body 解析为消息
func (*SimpleCodec) DecodeHeader ¶ added in v1.0.9
func (c *SimpleCodec) DecodeHeader(header []byte) (routeID uint32, bodyLen int, err error)
DecodeHeader 解析 header,返回 routeID 和 body 长度
func (*SimpleCodec) HeaderSize ¶ added in v1.0.9
func (c *SimpleCodec) HeaderSize() int
HeaderSize 返回固定 header 大小
type StdLogger ¶
type StdLogger struct{}
StdLogger 使用标准库 log 的日志实现。 不再直接依赖 mlog 模块,如需使用 mlog,请在外部实现 Logger 接口并传入。
type TLVCodec ¶
type TLVCodec struct {
// contains filtered or unexported fields
}
TLVCodec TLV格式编解码器 包格式: [1字节Type] + [2字节Length(大端)] + [Value] header = 3字节,Length 为 body 长度
func (*TLVCodec) DecodeBody ¶ added in v1.0.9
DecodeBody 将 body 解析为消息
func (*TLVCodec) DecodeHeader ¶ added in v1.0.9
DecodeHeader 解析 header,返回 routeID 和 body 长度
func (*TLVCodec) HeaderSize ¶ added in v1.0.9
HeaderSize 返回固定 header 大小
type TLVMessage ¶
type TLVMessage struct {
// contains filtered or unexported fields
}
TLVMessage TLV消息
func (*TLVMessage) RouteID ¶
func (m *TLVMessage) RouteID() uint32
RouteID TLVMessage 的路由ID就是 msgType
type WebSocketUpgrader ¶
type WebSocketUpgrader struct {
// contains filtered or unexported fields
}
WebSocketUpgrader WebSocket升级器
func NewWebSocketUpgrader ¶
func NewWebSocketUpgrader() *WebSocketUpgrader
NewWebSocketUpgrader 创建WebSocket升级器
func (*WebSocketUpgrader) SetCheckOrigin ¶
func (u *WebSocketUpgrader) SetCheckOrigin(fn func(r *http.Request) bool)
SetCheckOrigin 设置跨域检查函数