Documentation
¶
Index ¶
- type BuiltinEventHandler
- func (b BuiltinEventHandler) OnClose(socket *Conn, code uint16, reason []byte)
- func (b BuiltinEventHandler) OnError(socket *Conn, err error)
- func (b BuiltinEventHandler) OnMessage(socket *Conn, message *Message)
- func (b BuiltinEventHandler) OnOpen(socket *Conn)
- func (b BuiltinEventHandler) OnPing(socket *Conn, payload []byte)
- func (b BuiltinEventHandler) OnPong(socket *Conn, payload []byte)
- type ConcurrentMap
- func (c *ConcurrentMap) Delete(key interface{})
- func (c *ConcurrentMap) Len() int
- func (c *ConcurrentMap) Load(key interface{}) (value interface{}, exist bool)
- func (c *ConcurrentMap) Range(f func(key interface{}, value interface{}) bool)
- func (c *ConcurrentMap) Store(key interface{}, value interface{})
- type Conn
- func (c *Conn) Listen()
- func (c *Conn) LocalAddr() net.Addr
- func (c *Conn) NetConn() net.Conn
- func (c *Conn) RemoteAddr() net.Addr
- func (c *Conn) SetDeadline(t time.Time) error
- func (c *Conn) SetReadDeadline(t time.Time) error
- func (c *Conn) SetWriteDeadline(t time.Time) error
- func (c *Conn) WriteAsync(opcode Opcode, payload []byte) error
- func (c *Conn) WriteClose(code uint16, reason []byte)
- func (c *Conn) WriteMessage(opcode Opcode, payload []byte) error
- func (c *Conn) WritePing(payload []byte) error
- func (c *Conn) WritePong(payload []byte) error
- func (c *Conn) WriteString(s string) error
- type Event
- type Message
- type Opcode
- type Option
- func WithAsyncReadEnabled() Option
- func WithAsyncReadGoLimit(limit int) Option
- func WithAsyncWriteCap(capacity int) Option
- func WithCheckOrigin(f func(r *Request) bool) Option
- func WithCheckTextEncoding() Option
- func WithCompress(level int, threshold int) Option
- func WithEventHandler(eventHandler Event) Option
- func WithMaxContentLength(n int) Option
- func WithResponseHeader(h http.Header) Option
- type Request
- type SessionStorage
- type Upgrader
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type BuiltinEventHandler ¶ added in v1.3.0
type BuiltinEventHandler struct{}
func (BuiltinEventHandler) OnClose ¶ added in v1.3.0
func (b BuiltinEventHandler) OnClose(socket *Conn, code uint16, reason []byte)
func (BuiltinEventHandler) OnError ¶ added in v1.3.0
func (b BuiltinEventHandler) OnError(socket *Conn, err error)
func (BuiltinEventHandler) OnMessage ¶ added in v1.3.0
func (b BuiltinEventHandler) OnMessage(socket *Conn, message *Message)
func (BuiltinEventHandler) OnOpen ¶ added in v1.3.0
func (b BuiltinEventHandler) OnOpen(socket *Conn)
func (BuiltinEventHandler) OnPing ¶ added in v1.3.0
func (b BuiltinEventHandler) OnPing(socket *Conn, payload []byte)
func (BuiltinEventHandler) OnPong ¶ added in v1.3.0
func (b BuiltinEventHandler) OnPong(socket *Conn, payload []byte)
type ConcurrentMap ¶ added in v1.2.5
type ConcurrentMap struct {
// contains filtered or unexported fields
}
ConcurrentMap used to store websocket connections in the IM server 用来存储IM等服务的连接
func NewConcurrentMap ¶ added in v1.2.5
func NewConcurrentMap(segments uint64) *ConcurrentMap
func (*ConcurrentMap) Delete ¶ added in v1.2.5
func (c *ConcurrentMap) Delete(key interface{})
func (*ConcurrentMap) Len ¶ added in v1.2.5
func (c *ConcurrentMap) Len() int
func (*ConcurrentMap) Load ¶ added in v1.2.5
func (c *ConcurrentMap) Load(key interface{}) (value interface{}, exist bool)
func (*ConcurrentMap) Range ¶ added in v1.2.5
func (c *ConcurrentMap) Range(f func(key interface{}, value interface{}) bool)
Range calls f sequentially for each key and value present in the map. If f returns false, range stops the iteration.
func (*ConcurrentMap) Store ¶ added in v1.2.5
func (c *ConcurrentMap) Store(key interface{}, value interface{})
type Conn ¶
type Conn struct {
// store session information
SessionStorage SessionStorage
// contains filtered or unexported fields
}
func (*Conn) Listen ¶ added in v1.1.2
func (c *Conn) Listen()
Listen listening to websocket messages through a dead loop 监听websocket消息
func (*Conn) RemoteAddr ¶ added in v1.0.1
func (*Conn) SetReadDeadline ¶ added in v1.1.2
SetReadDeadline sets read deadline
func (*Conn) SetWriteDeadline ¶ added in v1.1.2
SetWriteDeadline sets write deadline
func (*Conn) WriteAsync ¶ added in v1.3.0
WriteAsync 异步写入消息, 适合广播等需要非阻塞的场景 asynchronous write messages, suitable for non-blocking scenarios such as broadcasting
func (*Conn) WriteClose ¶
WriteClose proactively close the connection code: https://developer.mozilla.org/zh-CN/docs/Web/API/CloseEvent#status_codes 通过emitError发送关闭帧, 将连接状态置为关闭, 用于服务端主动断开连接 没有特殊原因的话, 建议code=0, reason=nil
func (*Conn) WriteMessage ¶ added in v1.1.0
WriteMessage writes message 发送消息
func (*Conn) WriteString ¶ added in v1.2.10
WriteString write text frame
type Event ¶ added in v1.1.2
type Event interface {
// 建立连接事件
OnOpen(socket *Conn)
// 错误事件
// IO错误, 协议错误, 压缩解压错误...
OnError(socket *Conn, err error)
// 关闭事件
// 另一端发送了关闭帧
OnClose(socket *Conn, code uint16, reason []byte)
// 心跳探测事件
OnPing(socket *Conn, payload []byte)
// 心跳响应事件
OnPong(socket *Conn, payload []byte)
// 消息事件
// 如果开启了AsyncReadEnabled, 可以在一个连接里面并行处理多个请求
OnMessage(socket *Conn, message *Message)
}
WebSocket Event one of onclose and onerror will be called once during the connection's lifetime. 在连接的生命周期中,onclose和onerror中的一个有且只有一次被调用.
type Option ¶ added in v1.2.11
type Option func(c *Upgrader)
func WithAsyncReadEnabled ¶ added in v1.3.0
func WithAsyncReadEnabled() Option
WithAsyncReadEnabled 开启异步读功能, 并行地调用onmessage, 并发度会受到AsyncReadGoLimit的限制. enable asynchronous read, call onmessage concurrently, concurrency is limited by AsyncReadGoLimit.
func WithAsyncReadGoLimit ¶ added in v1.3.4
WithAsyncReadGoLimit 并行处理消息的最大协程数量限制 limit on the maximum number of concurrently processed messages
func WithAsyncWriteCap ¶ added in v1.3.4
WithAsyncWriteCap 异步非阻塞写入的容量限制, 超过限制的消息会被丢弃 capacity limit for asynchronous non-blocking writes, messages exceeding the limit will be discarded
func WithCheckOrigin ¶ added in v1.2.11
WithCheckOrigin 检查请求来源, 进行鉴权. check request origin
func WithCheckTextEncoding ¶ added in v1.2.11
func WithCheckTextEncoding() Option
WithCheckTextEncoding 检查文本utf8编码, 关闭性能会更好. set text encoding checking
func WithCompress ¶ added in v1.2.11
WithCompress 设置数据压缩. 是否压缩, 压缩级别和阈值, 低于阈值的数据不会被压缩. set data compression. set the compression level and the threshold value, below which the data will not be compressed.
func WithEventHandler ¶ added in v1.2.11
WithEventHandler 设置事件处理器 set event handler
func WithMaxContentLength ¶ added in v1.2.11
WithMaxContentLength 设置消息最大长度(字节) set max content length (byte).
func WithResponseHeader ¶ added in v1.2.11
WithResponseHeader 设置响应头, 客户端可能不支持. set response header, client may not support, use nil instead
type Request ¶
type Request struct {
*http.Request // http request
SessionStorage SessionStorage // store user session
}
type SessionStorage ¶ added in v1.2.3
type SessionStorage interface {
Load(key string) (value interface{}, exist bool)
Delete(key string)
Store(key string, value interface{})
Range(f func(key string, value interface{}) bool)
}
SessionStorage because sync.Map is not easy to debug, so I implemented my own map. if you don't like it, use sync.Map instead.
type Upgrader ¶
type Upgrader struct {
// websocket event handler
EventHandler Event
// whether to enable asynchronous reading. if on, onmessage will be called concurrently.
AsyncReadEnabled bool
// goroutine limits on concurrent read
AsyncReadGoLimit int
// capacity of async write queue
// if the capacity is full, the message will be discarded
AsyncWriteCap int
// whether to compress data
CompressEnabled bool
// compress level eg: flate.BestSpeed
CompressLevel int
// if contentLength < compressionThreshold, it won't be compressed.
CompressionThreshold int
// max message size
MaxContentLength int
// whether to check utf8 encoding when read messages, disabled for better performance
CheckTextEncoding bool
// https://www.rfc-editor.org/rfc/rfc6455.html#section-1.3
// attention: client may not support custom response header, use nil instead
ResponseHeader http.Header
// client authentication
CheckOrigin func(r *Request) bool
}
Upgrader websocket upgrader
func NewUpgrader ¶ added in v1.2.11
func (*Upgrader) Initialize ¶ added in v1.2.13
func (c *Upgrader) Initialize()
Initialize the upgrader configure 如果没有使用NewUpgrader, 需要调用此方法初始化配置


