websocket

package
v0.8.0 Latest Latest
Warning

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

Go to latest
Published: Apr 10, 2026 License: MIT Imports: 13 Imported by: 0

Documentation

Index

Constants

View Source
const (
	MaxHeaderSize  = 14
	MinHeaderSize  = 2
	MaxFrameLength = 1<<63 - 1
)

Variables

View Source
var (
	ErrBadMethod              = errors.New("websocket: request method must be GET")
	ErrBadProtocol            = errors.New("websocket: HTTP version must be at least 1.1")
	ErrBadHost                = errors.New("websocket: missing Host header")
	ErrBadUpgrade             = errors.New("websocket: missing or invalid Upgrade header")
	ErrBadConnection          = errors.New("websocket: missing or invalid Connection header")
	ErrBadSecKey              = errors.New("websocket: missing or invalid Sec-WebSocket-Key")
	ErrBadSecVersion          = errors.New("websocket: missing Sec-WebSocket-Version")
	ErrHeaderLengthUnexpected = errors.New("websocket: header length is too large")
	ErrConnClosed             = errors.New("websocket: connection closed")
	ErrFrameTooLarge          = errors.New("websocket: frame too large")
	ErrBadHandshake           = errors.New("websocket: bad handshake")
	ErrNotWebSocket           = errors.New("websocket: request is not a websocket upgrade")
	ErrBadWebSocketKey        = errors.New("websocket: missing or invalid Sec-WebSocket-Key")
	ErrBadWebSocketVersion    = errors.New("websocket: client must use version 13")
	ErrBadWebSocketKeyLen     = errors.New("websocket: invalid Sec-WebSocket-Key length")
	ErrForbiddenOrigin        = errors.New("websocket: origin not allowed")
	ErrHijackNotSupport       = errors.New("websocket: response does not support hijacking")
	ErrUpgradeRequired        = errors.New("websocket: unsupported Sec-WebSocket-Version, only 13 is supported")
)

Functions

func Mask

func Mask(key [4]byte, b []byte)

func PutCloseFrameBody

func PutCloseFrameBody(p []byte, code CloseStaatusCode, reason string)

func ReadHeader

func ReadHeader(r *bufio.Reader, dst *Header) error

func RsvBits

func RsvBits(rsv byte) (r1, r2, r3 bool)

func WriteFrame

func WriteFrame(w *bufio.Writer, f Frame) error

func WriteHeader

func WriteHeader(w *bufio.Writer, h Header) error

Types

type CloseError

type CloseError struct {
	Code   uint16
	Reason string
}

func NewCloseError

func NewCloseError(code CloseStaatusCode, reason string) *CloseError

func (*CloseError) Error

func (e *CloseError) Error() string

type CloseStaatusCode

type CloseStaatusCode uint16
const (
	CloseNormalClosure      CloseStaatusCode = 1000
	CloseGoingAway          CloseStaatusCode = 1001
	CloseProtocolError      CloseStaatusCode = 1002
	CloseUnsupportedData    CloseStaatusCode = 1003
	CloseNoStatusReceived   CloseStaatusCode = 1005
	CloseAbnormalClosure    CloseStaatusCode = 1006
	CloseInvalidPayload     CloseStaatusCode = 1007
	ClosePolicyViolation    CloseStaatusCode = 1008
	CloseMessageTooBig      CloseStaatusCode = 1009
	CloseMandatoryExtension CloseStaatusCode = 1010
	CloseInternalServerErr  CloseStaatusCode = 1011
	CloseServiceRestart     CloseStaatusCode = 1012
	CloseTryAgainLater      CloseStaatusCode = 1013
	CloseTLSHandshake       CloseStaatusCode = 1015
)

func ParseCloseFrameData

func ParseCloseFrameData(payload []byte) (code CloseStaatusCode, reason string)

func ParseCloseFrameDataUnsafe

func ParseCloseFrameDataUnsafe(payload []byte) (code CloseStaatusCode, reason string)

func (CloseStaatusCode) Value

func (s CloseStaatusCode) Value() uint16

type Conn

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

func NewConn

func NewConn(nc net.Conn, br *bufio.Reader, bw *bufio.Writer) *Conn

func (*Conn) Close

func (c *Conn) Close() error

func (*Conn) CloseWithError

func (c *Conn) CloseWithError(code CloseStaatusCode, reason string) error

func (*Conn) NextHeader

func (c *Conn) NextHeader(hdr *Header) error

func (*Conn) ReadPayload

func (c *Conn) ReadPayload(hdr Header, dst []byte) error

func (*Conn) WriteMessage

func (c *Conn) WriteMessage(op OpCode, payload []byte) error

type Frame

type Frame struct {
	Header  Header
	Payload []byte
}

func NewBinaryFrame

func NewBinaryFrame(p []byte) Frame

func NewCloseFrame

func NewCloseFrame(p []byte) Frame

func NewCloseFrameWithReason

func NewCloseFrameWithReason(code CloseStaatusCode, reason string) Frame

func NewFrame

func NewFrame(op OpCode, fin bool, p []byte) Frame

func NewPingFrame

func NewPingFrame(p []byte) Frame

func NewPongFrame

func NewPongFrame(p []byte) Frame

func NewTextFrame

func NewTextFrame(p []byte) Frame

type Handshake

type Handshake struct {
	// contains filtered or unexported fields
}
type Header struct {
	Fin    bool
	Rsv    byte
	OpCode OpCode
	Masked bool
	Mask   [4]byte
	Length uint64
}

func (Header) IsControl

func (h Header) IsControl() bool

func (Header) RSV1

func (h Header) RSV1() bool

func (Header) RSV2

func (h Header) RSV2() bool

func (Header) RSV3

func (h Header) RSV3() bool

type OpCode

type OpCode byte
const (
	OpContinuation OpCode = 0x0
	OpText         OpCode = 0x1
	OpBinary       OpCode = 0x2
	// 0x3–0x7: reserved data frames
	OpClose OpCode = 0x8
	OpPing  OpCode = 0x9
	OpPong  OpCode = 0xA
)

func (OpCode) IsControl

func (op OpCode) IsControl() bool

func (OpCode) IsData

func (op OpCode) IsData() bool

func (OpCode) IsReserved

func (op OpCode) IsReserved() bool

type Upgrader

type Upgrader struct {
	CheckOrigin  func(origin string) bool
	Subprotocols []string
	WriteTimeout time.Duration
}

func (*Upgrader) Upgrade

func (u *Upgrader) Upgrade(w http.ResponseWriter, r *http.Request) (*Conn, error)

Jump to

Keyboard shortcuts

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