websocket

package
v1.0.3 Latest Latest
Warning

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

Go to latest
Published: Apr 19, 2022 License: MIT Imports: 18 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	// ErrUpgradeTokenNotFound .
	ErrUpgradeTokenNotFound = errors.New("websocket: the client is not using the websocket protocol: 'upgrade' token not found in 'Connection' header")

	// ErrUpgradeMethodIsGet .
	ErrUpgradeMethodIsGet = errors.New("websocket: the client is not using the websocket protocol: request method is not GET")

	// ErrUpgradeInvalidWebsocketVersion .
	ErrUpgradeInvalidWebsocketVersion = errors.New("websocket: unsupported version: 13 not found in 'Sec-Websocket-Version' header")

	// ErrUpgradeUnsupportedExtensions .
	ErrUpgradeUnsupportedExtensions = errors.New("websocket: application specific 'Sec-WebSocket-Extensions' headers are unsupported")

	// ErrUpgradeOriginNotAllowed .
	ErrUpgradeOriginNotAllowed = errors.New("websocket: request origin not allowed by upgrader.CheckOrigin")

	// ErrUpgradeMissingWebsocketKey .
	ErrUpgradeMissingWebsocketKey = errors.New("websocket: not a websocket handshake: 'Sec-WebSocket-Key' header is missing or blank")

	// ErrUpgradeNotHijacker .
	ErrUpgradeNotHijacker = errors.New("websocket: response does not implement http.Hijacker")

	// ErrInvalidControlFrame .
	ErrInvalidControlFrame = errors.New("websocket: invalid control frame")

	// ErrInvalidWriteCalling .
	ErrInvalidWriteCalling = errors.New("websocket: invalid write calling, should call WriteMessage instead")

	// ErrReserveBitSet .
	ErrReserveBitSet = errors.New("websocket: reserved bit set it frame")

	// ErrReservedOpcodeSet .
	ErrReservedOpcodeSet = errors.New("websocket: reserved opcode received")

	// ErrControlMessageFragmented .
	ErrControlMessageFragmented = errors.New("websocket: control messages must not be fragmented")

	// ErrFragmentsShouldNotHaveBinaryOrTextOpcode .
	ErrFragmentsShouldNotHaveBinaryOrTextOpcode = errors.New("websocket: fragments should not have opcode of text or binary")

	// ErrInvalidCloseCode .
	ErrInvalidCloseCode = errors.New("websocket: invalid close code")

	// ErrBadHandshake .
	ErrBadHandshake = errors.New("websocket: bad handshake")

	// ErrInvalidCompression .
	ErrInvalidCompression = errors.New("websocket: invalid compression negotiation")

	// ErrMalformedURL .
	ErrMalformedURL = errors.New("malformed ws or wss URL")

	// ErrMessageTooLarge.
	ErrMessageTooLarge = errors.New("message exceeds the configured limit")
)
View Source
var (
	MaxWebsocketFramePayloadSize = 16 * 1024 // 16k
)

Functions

func Decompress

func Decompress(buf []byte) (*bpool.Buff, error)

func NewUpGrader

func NewUpGrader() *upgrader

NewUpgrader .

Types

type Config

type Config struct {
	ReadLimit              int
	MaxMessageSize         int
	CompressionLevel       int
	HandshakeTimeout       time.Duration
	EnableCompression      bool // 是否开启压缩,并且告知客户端
	EnableWriteCompression bool // 是否对写数据进行压缩,通常不需要压缩
	Origin                 bool // 是否检查域名
}

func DefaultConfig

func DefaultConfig() *Config

func (*Config) Confirm

func (c *Config) Confirm()

type Conn

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

Conn .

func Upgrade

func Upgrade(cfg *Config, w http.ResponseWriter, conn net.Conn, r *http.Request) (*Conn, error)

func (*Conn) EnableWriteCompression

func (c *Conn) EnableWriteCompression(enable bool)

EnableWriteCompression .

func (*Conn) OnClose

func (c *Conn) OnClose()

OnClose .

func (*Conn) Read

func (c *Conn) Read(data []byte) error

Read .

func (*Conn) SetCompressionLevel

func (c *Conn) SetCompressionLevel(level int) error

SetCompressionLevel .

func (*Conn) SetHandler

func (c *Conn) SetHandler(h MessageHandler)

func (*Conn) Write

func (c *Conn) Write(data []byte) (int, error)

Write overwrites nbio.Conn.Write.

func (*Conn) WriteMessage

func (c *Conn) WriteMessage(messageType MessageType, data []byte) error

WriteMessage .

type ErrorType

type ErrorType int
const (
	ErrTypeClosed ErrorType = iota + 1
)

type MessageHandler

type MessageHandler interface {
	Cast(msg interface{})
}

type MessageType

type MessageType int8

MessageType .

const (
	// FragmentMessage .
	FragmentMessage MessageType = 0 // Must be preceded by Text or Binary message
	// TextMessage .
	TextMessage MessageType = 1
	// BinaryMessage .
	BinaryMessage MessageType = 2
	// CloseMessage .
	CloseMessage MessageType = 8
	// PingMessage .
	PingMessage MessageType = 9
	// PongMessage .
	PongMessage MessageType = 10
)

The message types are defined in RFC 6455, section 11.8.t .

type WsError

type WsError struct {
	ErrType ErrorType
}

Jump to

Keyboard shortcuts

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