Documentation
¶
Index ¶
- Variables
- type Client
- type Extension
- type Handler
- type Operation
- type Packet
- type Protocols
- type Server
- func (server *Server) AddSocket(websocket *WebSocket)
- func (server *Server) Close() error
- func (server *Server) Listen() error
- func (server *Server) RegisterOnShutdown(callback func())
- func (server *Server) RemoveSocket(websocket *WebSocket)
- func (server *Server) Serve(listener net.Listener) error
- func (server *Server) ServeTLS(listener net.Listener, cert_file string, key_file string) error
- func (server *Server) Shutdown(ctx context.Context) error
- func (server *Server) Upgrade(response http.ResponseWriter, request *http.Request) (*WebSocket, error)
- type SocketType
- type Status
- type WebSocket
- func (websocket *WebSocket) Close(status Status, reason string)
- func (websocket *WebSocket) Destroy()
- func (websocket *WebSocket) Init()
- func (websocket *WebSocket) Send(data []byte) error
- func (websocket *WebSocket) SendBinary(data []byte) error
- func (websocket *WebSocket) SendPacket(packet Packet) error
Constants ¶
This section is empty.
Variables ¶
View Source
var ( ErrPacketIncomplete = errors.New("websocket: incomplete packet") ErrPacketTooLarge = errors.New("websocket: packet too large") ErrPacketControlFrameFragmented = errors.New("websocket: fragmented control frame") ErrPacketControlFrameTooLarge = errors.New("websocket: control frame too large") ErrPacketInvalidOperation = errors.New("websocket: invalid opcode") ErrPacketReservedBits = errors.New("websocket: reserved bits set without extension") ErrServerClosed = errors.New("websocket: server closed") ErrExtensionNegotiationFailed = errors.New("websocket: extension negotiation failed") )
Functions ¶
This section is empty.
Types ¶
type Client ¶
type Extension ¶
type Extension interface {
// Name returns the extension identifier (e.g., "permessage-deflate").
Name() string
// Parameters returns the extension's parameters to include in the
// client's Sec-WebSocket-Extensions offer header.
// Returns nil if the extension should not be offered.
Parameters() map[string]string
// Negotiate is called by the server with the client's offered parameters.
// Returns agreed parameters and true if accepted, or nil and false if declined.
Negotiate(offer map[string]string) (agreed map[string]string, accepted bool)
// Accept is called by the client with the server's response parameters.
// Returns true if the client accepts the server's configuration.
Accept(response map[string]string) bool
// Compress transforms an outgoing data message payload before framing.
// Only called for non-control frames when extensions are active.
Compress(payload []byte) ([]byte, error)
// Decompress transforms an incoming data message payload after reassembly.
// Only called for data messages where the first frame had RSV1 set.
Decompress(payload []byte) ([]byte, error)
}
type Packet ¶
type Packet struct {
Operation Operation `json:"operation"`
Type SocketType `json:"type"`
Mask []byte `json:"mask"`
Payload []byte `json:"payload"`
Reserved [3]bool `json:"reserved"`
Final bool `json:"final"`
}
func ParsePacket ¶
type Server ¶
type Server struct {
Addr string
Handler Handler
TLSConfig *tls.Config
TLSNextProto map[string]func(*Server, *tls.Conn, Handler)
ErrorLog *log.Logger
BaseContext func(net.Listener) context.Context
ConnContext func(context.Context, net.Conn) context.Context
Protocols *Protocols
Extensions []Extension
Sockets []*WebSocket
// contains filtered or unexported fields
}
func (*Server) RegisterOnShutdown ¶
func (server *Server) RegisterOnShutdown(callback func())
func (*Server) RemoveSocket ¶
type SocketType ¶
type SocketType string
const ( SocketTypeClient SocketType = "client" SocketTypeServer SocketType = "server" )
type Status ¶
type Status uint16
const ( StatusNormalClosure Status = 1000 StatusGoingAway Status = 1001 StatusProtocolError Status = 1002 StatusUnsupportedData Status = 1003 StatusNoStatusReceived Status = 1005 StatusAbnormalClosure Status = 1006 StatusInvalidPayload Status = 1007 StatusPolicyViolation Status = 1008 StatusMessageTooBig Status = 1009 StatusExtensionRequired Status = 1010 StatusInternalError Status = 1011 )
type WebSocket ¶
type WebSocket struct {
Connection net.Conn `json:"connection"`
Frames []Packet `json:"frames"`
Type SocketType `json:"type"`
Server *Server `json:"server"`
Extensions []Extension `json:"-"`
OnMessage func([]byte) `json:"-"`
OnClose func() `json:"-"`
// contains filtered or unexported fields
}
func (*WebSocket) SendBinary ¶
func (*WebSocket) SendPacket ¶
Source Files
¶
Click to show internal directories.
Click to hide internal directories.