websocket

package
v0.0.9 Latest Latest
Warning

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

Go to latest
Published: Jul 30, 2021 License: MIT Imports: 17 Imported by: 0

Documentation

Index

Constants

View Source
const DefaultWebSocketKey = "WebSocket"

Variables

View Source
var (
	ErrConnClosed = errors.New("websocket connection closed")
)
View Source
var HandlerInvoke = defaultHandlerInvoke

HandlerInvoke 可自定义的 websocket 执行函数

View Source
var ProcessMessage = defaultProcessMessage
View Source
var ProcessSubprotocols = defaultProcessSubprotocols

Functions

This section is empty.

Types

type Config added in v0.0.7

type Config struct {
	Enable            bool          `value:"${web.server.websocket.enable:=false}"`            //是否启用WebSocket
	Origin            bool          `value:"${web.server.websocket.origin:=true}"`             //是否启用跨域
	ReadDeadline      time.Duration `value:"${web.server.websocket.read_deadline:=0}"`         //消息单次读取超时时间,单位:秒
	WriteDeadline     time.Duration `value:"${web.server.websocket.write_deadline:=0}"`        //消息单次写入超时时间,单位:秒
	ReadBufferSize    int           `value:"${web.server.websocket.read_buffer_size:=20480}"`  //connect read buffer size: 20kb
	WriteBufferSize   int           `value:"${web.server.websocket.write_buffer_size:=20480}"` //connect write buffer size: 20kb
	MaxMessageSize    int64         `value:"${web.server.websocket.max_message_size:=65535}"`  //从消息管道读取消息的最大字节: 65535 byte
	ProcessorPoolSize int           `value:"${web.server.websocket.processor_pool_size:=10}"`  //处理器协程池大小
	InChanSize        int           `value:"${web.server.websocket.in_chan_size:=100}"`        //已读管道大小
	OutChanSize       int           `value:"${web.server.websocket.out_chan_size:=100}"`       //待写管道大小
}

func DefaultConfig added in v0.0.7

func DefaultConfig() *Config

type Conn

type Conn struct {
	// contains filtered or unexported fields
}

func NewConn

func NewConn(config *Config) *Conn

func (*Conn) Close

func (c *Conn) Close() error

func (*Conn) IsClose

func (c *Conn) IsClose() bool

func (*Conn) Open

func (c *Conn) Open(w http.ResponseWriter, r *http.Request, h http.Header, processor Processor) error

func (*Conn) ProcessLoop added in v0.0.7

func (c *Conn) ProcessLoop()

1、当conn关闭后,in管道中还有没处理完的数据;

func (*Conn) Read

func (c *Conn) Read() *WSMessage

func (*Conn) ReadLoop

func (c *Conn) ReadLoop()

func (*Conn) Write

func (c *Conn) Write(msg *WSMessage) error

func (*Conn) WriteLoop

func (c *Conn) WriteLoop()

1、当conn关闭后,out管道中还有没处理完的消息(需要业务端自己处理没有发送的消息); 2、当msg已发送到client后,需要callback回写数据库的情况(特殊情况业务端自己处理);

type Container added in v0.0.7

type Container struct {
	// contains filtered or unexported fields
}

func NewContainer added in v0.0.7

func NewContainer(processorFactory ProcessorFactory, config *Config) *Container

func (*Container) Config added in v0.0.7

func (c *Container) Config() *Config

func (*Container) Handle added in v0.0.7

func (c *Container) Handle(typed string, handler Handler)

func (*Container) HandleFunc added in v0.0.7

func (c *Container) HandleFunc(typed string, handler func(*Conn, *Message))

func (*Container) OpenConn added in v0.0.7

func (c *Container) OpenConn(w http.ResponseWriter, r *http.Request)

func (*Container) OpenConnGin added in v0.0.7

func (c *Container) OpenConnGin(ctx *gin.Context)

func (*Container) OpenConnSpring added in v0.0.7

func (c *Container) OpenConnSpring(ctx SpringWeb.WebContext)

func (*Container) Register added in v0.0.7

func (c *Container) Register(conn *Conn)

func (*Container) Route added in v0.0.7

func (c *Container) Route(typed string) Handler

func (*Container) Start added in v0.0.7

func (c *Container) Start()

func (*Container) Stop added in v0.0.7

func (c *Container) Stop() error

todo

func (*Container) UnRegister added in v0.0.7

func (c *Container) UnRegister(conn *Conn)

type Handler

type Handler interface {
	Invoke(conn *Conn, msg *Message)
}

func BIND

func BIND(fn interface{}) Handler

type HandlerFunc

type HandlerFunc func(conn *Conn, msg *Message)

func (HandlerFunc) Invoke

func (f HandlerFunc) Invoke(conn *Conn, msg *Message)

type Hub

type Hub interface {
	Config() *Config
	Register(conn *Conn)
	UnRegister(conn *Conn)
	Route(typed string) Handler
}

type Logger

type Logger interface {
	Error(args ...interface{})
}
var DefaultLogger Logger = log.New()

type Message

type Message struct {
	Type string      `json:"type"`           //消息类型
	SN   int         `json:"sn"`             //流水号
	Code int         `json:"code"`           //状态码
	Msg  string      `json:"msg,omitempty"`  //消息
	Data interface{} `json:"data,omitempty"` //结果数据
}

func NewErrorMessage

func NewErrorMessage(err error) *Message

func NewMessage

func NewMessage(code int, msg string, datas ...interface{}) *Message

func NewSuccessMessage

func NewSuccessMessage(datas ...interface{}) *Message

func (Message) String added in v0.0.7

func (m Message) String() string

todo: 优化显示

type Param

type Param struct {
	Type      reflect.Type
	ParamType ParamType
}

func NewParam

func NewParam(typ reflect.Type) Param

type ParamType

type ParamType uint
const (
	ParamInvalid ParamType = iota
	ParamStruct
	ParamOther
	ParamConn
	ParamMessage
)

type Processor added in v0.0.7

type Processor interface {
	Subprotocols(r *http.Request) []string //处理 WebSocket Subprotocols 子协议: 返回处理器支持的子协议
	OnMessage(msg *WSMessage)              //消息处理
	OnError(err error, msg *WSMessage)     //错误处理
	OnClose()                              //关闭连接时
	OnQuit()                               //退出协程时
}

func NewProcessor added in v0.0.7

func NewProcessor(conn *Conn, hub Hub) (Processor, error)

type ProcessorFactory added in v0.0.7

type ProcessorFactory func(conn *Conn, hub Hub) (Processor, error)

type RawMessage

type RawMessage struct {
	*Message
	Data json.RawMessage `json:"data,omitempty"`
}

func (*RawMessage) Msg

func (r *RawMessage) Msg() *Message

type Server

type Server struct {
	// contains filtered or unexported fields
}

func NewServer

func NewServer() *Server

func (*Server) AddContainer added in v0.0.7

func (s *Server) AddContainer(container ...*Container) *Server

AddContainer 添加 Container 实例

func (*Server) Containers added in v0.0.7

func (s *Server) Containers() []*Container

Containers 返回 Container 实例列表

func (*Server) Start added in v0.0.7

func (s *Server) Start()

Start 启动 WS 容器,非阻塞调用

func (*Server) Stop added in v0.0.7

func (s *Server) Stop()

Stop 停止 WS 容器,阻塞调用

type WSMessage

type WSMessage struct {
	Type int
	Data []byte
}

func (WSMessage) String added in v0.0.7

func (w WSMessage) String() string

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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