Versions in this module Expand all Collapse all v0 v0.55.0 May 4, 2024 v0.54.0 Apr 4, 2024 Changes in this version + const StatusBadGateway + const StatusBadRequest + const StatusForbidden + const StatusGone + const StatusInternalError + const StatusInvalidData + const StatusNormal + const StatusRequestEntityTooLarge + const StatusUnsupportedType + var ErrBadRequest = errors.New("bad request") + var ErrConnClosed = errors.New(`client is not connected`) + var ErrInvalidHTTPMethod = errors.New("invalid HTTP method") + var ErrInvalidHTTPVersion = errors.New("invalid HTTP version") + var ErrInvalidHeaderConn = errors.New("invalid Connection header") + var ErrInvalidHeaderFormat = errors.New("invalid Header format") + var ErrInvalidHeaderHost = errors.New("invalid Host header") + var ErrInvalidHeaderUpgrade = errors.New("invalid Upgrade header") + var ErrInvalidHeaderWSExtensions = errors.New("invalid Sec-Websocket-Extensions header") + var ErrInvalidHeaderWSKey = errors.New("invalid Sec-Websocket-Key header") + var ErrInvalidHeaderWSProtocol = errors.New("invalid Sec-Websocket-Protocol header") + var ErrInvalidHeaderWSVersion = errors.New("invalid Sec-Websocket-Version header") + var ErrMissingRequiredHeader = errors.New("missing required headers") + var ErrRequestHeaderLength = errors.New("bad request: header length is less than minimum") + var ErrRequestLength = errors.New("bad request: length is less than minimum") + var ErrRouteDupParam = errors.New("duplicate parameter on route") + var ErrRouteInvMethod = errors.New("invalid method") + var ErrRouteInvTarget = errors.New("invalid target") + var ErrUnsupportedWSVersion = errors.New("unsupported Sec-WebSocket-Version") + func NewBroadcast(message, body string) (packet []byte, err error) + func NewFrame(opcode Opcode, isMasked bool, payload []byte) []byte + func NewFrameBin(isMasked bool, payload []byte) []byte + func NewFrameClose(isMasked bool, code CloseCode, payload []byte) []byte + func NewFramePing(isMasked bool, payload []byte) (packet []byte) + func NewFramePong(isMasked bool, payload []byte) (packet []byte) + func NewFrameText(isMasked bool, payload []byte) []byte + func Recv(fd int, timeout time.Duration) (packet []byte, err error) + func Send(fd int, packet []byte, timeout time.Duration) (err error) + type Client struct + Endpoint string + HandleBin ClientHandler + HandleQuit func() + HandleRsvControl ClientHandler + HandleText ClientHandler + Headers http.Header + PingInterval time.Duration + TLSConfig *tls.Config + func (cl *Client) Close() (err error) + func (cl *Client) Connect() (err error) + func (cl *Client) Quit() + func (cl *Client) SendBin(payload []byte) (err error) + func (cl *Client) SendPing(payload []byte) (err error) + func (cl *Client) SendPong(payload []byte) (err error) + func (cl *Client) SendText(payload []byte) (err error) + type ClientHandler func(cl *Client, frame *Frame) (err error) + type ClientManager struct + func (cls *ClientManager) All() (conns []int) + func (cls *ClientManager) Conns(uid uint64) (conns []int) + func (cls *ClientManager) Context(conn int) (ctx context.Context, ok bool) + type CloseCode uint16 + type ContextKey byte + const CtxKeyExternalJWT + const CtxKeyInternalJWT + const CtxKeyUID + type Frame struct + func (f *Frame) IsData() bool + func (f *Frame) Opcode() Opcode + func (f *Frame) Payload() []byte + type Frames struct + func Unpack(packet []byte) (frames *Frames) + func (frames *Frames) Append(f *Frame) + func (frames *Frames) Opcode() Opcode + type HandlerAuthFn func(req *Handshake) (ctx context.Context, err error) + type HandlerClientFn func(ctx context.Context, conn int) + type HandlerFrameFn func(conn int, frame *Frame) + type HandlerPayloadFn func(conn int, payload []byte) + type HandlerStatusFn func() (contentType string, data []byte) + type Handshake struct + Extensions []byte + Header http.Header + Host []byte + Key []byte + Protocol []byte + URL *url.URL + type Opcode byte + const OpcodeBin + const OpcodeClose + const OpcodeCont + const OpcodeControlRsvB + const OpcodeControlRsvC + const OpcodeControlRsvD + const OpcodeControlRsvE + const OpcodeControlRsvF + const OpcodeDataRsv3 + const OpcodeDataRsv4 + const OpcodeDataRsv5 + const OpcodeDataRsv6 + const OpcodeDataRsv7 + const OpcodePing + const OpcodePong + const OpcodeText + type Request struct + Body string + Conn int + ID uint64 + Method string + Params targetParam + Path string + Query url.Values + Target string + type Response struct + Body string + Code int32 + ID uint64 + Message string + type RouteHandler func(ctx context.Context, req *Request) (res Response) + type Server struct + Clients *ClientManager + Options *ServerOptions + func NewServer(opts *ServerOptions) (serv *Server) + func (serv *Server) AllowReservedBits(one, two, three bool) + func (serv *Server) ClientRemove(conn int) + func (serv *Server) RegisterTextHandler(method, target string, handler RouteHandler) (err error) + func (serv *Server) Start() (err error) + func (serv *Server) Stop() + type ServerOptions struct + Address string + ConnectPath string + HandleAuth HandlerAuthFn + HandleBin HandlerPayloadFn + HandleClientAdd HandlerClientFn + HandleClientRemove HandlerClientFn + HandleRsvControl HandlerFrameFn + HandleStatus HandlerStatusFn + HandleText HandlerPayloadFn + ReadWriteTimeout time.Duration + StatusPath string