gows

package
v1.1.4 Latest Latest
Warning

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

Go to latest
Published: Feb 13, 2023 License: Apache-2.0 Imports: 20 Imported by: 0

Documentation

Index

Constants

View Source
const (
	Frame_Null     = -1
	Frame_Continue = 0
	Frame_Text     = 1
	Frame_Binary   = 2
	Frame_Close    = 8
	Frame_Ping     = 9
	Frame_Pong     = 10
)

Variables

This section is empty.

Functions

func BytesToString

func BytesToString(bytes []byte) string

func CloseReader

func CloseReader(r *MessageReader) error

func CloseWriter

func CloseWriter(writer *MessageWriter) error

关闭MessageWriter,MessageWriter关闭后会解除对NextWriter调用的阻塞

func HeaderValueCheck

func HeaderValueCheck(header http.Header, key string, val string) bool

func MarshalCloseInfo

func MarshalCloseInfo(code CloseCode, text string) ([]byte, error)

func OriginHostCheck

func OriginHostCheck(r *http.Request) bool

func PutByteBuffer

func PutByteBuffer(b *ByteBuffer)

func SetDebugLogger

func SetDebugLogger(logger DebugLogger)

func SetFrameReadBuffSize

func SetFrameReadBuffSize(size int)

func SetLoggerPrefix

func SetLoggerPrefix(prefix string)

func SetMessageBufferSize

func SetMessageBufferSize(size int)

func SetMinCompressSize

func SetMinCompressSize(size int)

func ShowDebugLog

func ShowDebugLog(show bool)

func StringToBytes

func StringToBytes(s string) []byte

func UseFlate

func UseFlate(val ...CompressAlloter)

func WriteAllTo

func WriteAllTo(buff []byte, dst io.Writer) error

Types

type AcceptOptions

type AcceptOptions struct {
	SubProtocols []string
	// contains filtered or unexported fields
}

func DefaultAcceptOptions

func DefaultAcceptOptions() *AcceptOptions

func NewAcceptOptions

func NewAcceptOptions() *AcceptOptions

func (*AcceptOptions) SetFrameReadBuffSize

func (this *AcceptOptions) SetFrameReadBuffSize(size int)

func (*AcceptOptions) SetMessageBufferSize

func (this *AcceptOptions) SetMessageBufferSize(size int)

func (*AcceptOptions) SetMinCompressSize

func (this *AcceptOptions) SetMinCompressSize(size int)

func (*AcceptOptions) UseFlate

func (this *AcceptOptions) UseFlate(val ...CompressAlloter)

type ByteBuffer

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

func GetByteBuffer

func GetByteBuffer(opts *AcceptOptions) *ByteBuffer

func (*ByteBuffer) CloneBytes

func (b *ByteBuffer) CloneBytes() []byte

func (*ByteBuffer) Close

func (b *ByteBuffer) Close()

func (*ByteBuffer) GetBytes

func (b *ByteBuffer) GetBytes() []byte

func (*ByteBuffer) GetString

func (b *ByteBuffer) GetString() string

func (*ByteBuffer) GetVolatileString

func (b *ByteBuffer) GetVolatileString() string

func (*ByteBuffer) ReadAll

func (b *ByteBuffer) ReadAll(reader io.Reader) error

func (*ByteBuffer) ReadFull

func (b *ByteBuffer) ReadFull(reader io.Reader) error

func (*ByteBuffer) Reset

func (b *ByteBuffer) Reset()

func (*ByteBuffer) Size

func (b *ByteBuffer) Size() int

type CloseCode

type CloseCode int
const (
	CloseNormalClosure      CloseCode = 1000
	CloseGoingAway          CloseCode = 1001
	CloseProtocolError      CloseCode = 1002
	CloseUnsupportedData    CloseCode = 1003
	CloseReserved           CloseCode = 1004
	CloseNoCloseRcvd        CloseCode = 1005
	CloseAbnormalClosure    CloseCode = 1006
	CloseInvalidPayload     CloseCode = 1007
	ClosePolicyViolation    CloseCode = 1008
	CloseMessageTooBig      CloseCode = 1009
	CloseMandatoryExtension CloseCode = 1010
	CloseInternalError      CloseCode = 1011
	CloseServiceRestart     CloseCode = 1012
	CloseTryAgainLater      CloseCode = 1013
	CloseBadGateway         CloseCode = 1014
	CloseTLSHandshake       CloseCode = 1015
)

type CloseInfo

type CloseInfo struct {
	Code CloseCode
	Text string
}

type CompressAlloter

type CompressAlloter interface {
	NewWriter(mw *FrameWriter) (io.WriteCloser, error)
	ResetWriter(fw io.WriteCloser, mw *FrameWriter) error
	NewReader(mr *FrameReader) (io.ReadCloser, error)
	ResetReader(fr io.ReadCloser, mr *FrameReader) error
}

type CompressMode

type CompressMode int
const (
	CompressDisabled CompressMode = iota
	CompressContextTakeover
	CompressNoContextTakeover
)

type DebugLogger

type DebugLogger interface {
	Output(prefix string, msg string)
}

type ExtParam

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

type FlateAlloter

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

func NewFlateAlloter

func NewFlateAlloter(level int) *FlateAlloter

func (*FlateAlloter) NewReader

func (this *FlateAlloter) NewReader(mr *FrameReader) (io.ReadCloser, error)

func (*FlateAlloter) NewWriter

func (this *FlateAlloter) NewWriter(mw *FrameWriter) (io.WriteCloser, error)

func (*FlateAlloter) ResetReader

func (this *FlateAlloter) ResetReader(fr io.ReadCloser, mr *FrameReader) error

func (*FlateAlloter) ResetWriter

func (this *FlateAlloter) ResetWriter(fw io.WriteCloser, mw *FrameWriter) error

type FrameHeader

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

type FrameReader

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

func (*FrameReader) BufferSize

func (mr *FrameReader) BufferSize() int

func (*FrameReader) Close

func (mr *FrameReader) Close() error

func (*FrameReader) Init

func (mr *FrameReader) Init(ws *WebSocket, br *bufio.Reader)

func (*FrameReader) Read

func (mr *FrameReader) Read(p []byte) (int, error)

mr.extra是结束标志:"\x01\x00\x00\xff\xff"来防止flate.reader产生:unexpected EOF错误 首先从网络接口读取消息数据,消息数据读取完成后从mr.extra读取压缩数据结束标志

func (*FrameReader) ReadMessagePayload

func (mr *FrameReader) ReadMessagePayload(p []byte) (int, error)

type FrameWriter

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

func NewFrameWriter

func NewFrameWriter(ws *WebSocket, opcode int) *FrameWriter

func (*FrameWriter) Close

func (w *FrameWriter) Close() error

init后,opcode != (Frame_Continue, Frame_Null) 写数据后,opcode == (Frame_Continue, Frame_Null) colse后,opcode == Frame_Null

colse前检查是否已经发送了结束帧(opcode == Frame_Null), 若已经发送了结束帧,则退出

func (*FrameWriter) GetPayload

func (w *FrameWriter) GetPayload() []byte

func (*FrameWriter) GetPayloadLength

func (w *FrameWriter) GetPayloadLength() int

func (*FrameWriter) Reset

func (w *FrameWriter) Reset(ws *WebSocket, opcode int) error

func (*FrameWriter) SetTrimlength

func (w *FrameWriter) SetTrimlength(trim int)

func (*FrameWriter) Write

func (w *FrameWriter) Write(p []byte) (int, error)

func (*FrameWriter) WriteAll

func (w *FrameWriter) WriteAll(data []byte) error

func (*FrameWriter) WriteControlFrame

func (w *FrameWriter) WriteControlFrame(data []byte) error

func (*FrameWriter) WriteString

func (w *FrameWriter) WriteString(str string) error

type MessageHandler

type MessageHandler interface {
	SocketHandler
	OnMessage(ws *WebSocket, opcode int, buff *ByteBuffer) error
}

type MessageReader

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

func (*MessageReader) Close

func (mr *MessageReader) Close() error

func (*MessageReader) Read

func (mr *MessageReader) Read(p []byte) (int, error)

func (*MessageReader) ReadAll

func (mr *MessageReader) ReadAll() (*ByteBuffer, error)

type MessageWriter

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

func (*MessageWriter) Close

func (w *MessageWriter) Close() error

func (*MessageWriter) Write

func (w *MessageWriter) Write(p []byte) (int, error)

func (*MessageWriter) WriteAll

func (w *MessageWriter) WriteAll(data []byte) error

func (*MessageWriter) WriteControlFrame

func (w *MessageWriter) WriteControlFrame(data []byte) error

func (*MessageWriter) WriteString

func (w *MessageWriter) WriteString(str string) error

type SimpleLogger

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

func NewSimpleLogger

func NewSimpleLogger() *SimpleLogger

func (*SimpleLogger) Output

func (lg *SimpleLogger) Output(prefix string, msg string)

type SocketHandler

type SocketHandler interface {
	OnClose(ws *WebSocket)
}

type StreamReadHandler

type StreamReadHandler interface {
	SocketHandler
	OnData(ws *WebSocket, opcode int, fin bool, buff *ByteBuffer) error
}

type TokenInfo

type TokenInfo struct {
	Value string
	Index int
	Flag  int
}

type WebSocket

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

func Accept

func Accept(w http.ResponseWriter, r *http.Request, opts *AcceptOptions, headers map[string]string) (*WebSocket, error)

func NewWebSocket

func NewWebSocket(cnn net.Conn, opts *AcceptOptions, br *bufio.Reader) *WebSocket

func (*WebSocket) Close

func (ws *WebSocket) Close() error

func (*WebSocket) LocalAddr

func (ws *WebSocket) LocalAddr() net.Addr

func (*WebSocket) NextReader

func (ws *WebSocket) NextReader() (FrameHeader, *MessageReader, error)

func (*WebSocket) NextWriter

func (ws *WebSocket) NextWriter(opcode int) *MessageWriter

获取一个MessageWriter, 若存在已经创建的MessageWriter,则该调用被阻塞

func (*WebSocket) RemoteAddr

func (ws *WebSocket) RemoteAddr() net.Addr

func (*WebSocket) Serve

func (ws *WebSocket) Serve(handler SocketHandler)

func (*WebSocket) ServeMessage

func (ws *WebSocket) ServeMessage(handler MessageHandler)

func (*WebSocket) ServeStream

func (ws *WebSocket) ServeStream(handler StreamReadHandler)

func (*WebSocket) SetWriteTimeOut

func (ws *WebSocket) SetWriteTimeOut(writeTimeOut time.Duration)

func (*WebSocket) WiteCloseError

func (ws *WebSocket) WiteCloseError(code CloseCode, err error) error

func (*WebSocket) WiteCloseProtocolError

func (ws *WebSocket) WiteCloseProtocolError(err error) error

func (*WebSocket) WiteCloseText

func (ws *WebSocket) WiteCloseText(code CloseCode, text string) error

func (*WebSocket) WriteBinary

func (ws *WebSocket) WriteBinary(data []byte) error

func (*WebSocket) WriteClose

func (ws *WebSocket) WriteClose(data []byte) error

func (*WebSocket) WriteJSON

func (ws *WebSocket) WriteJSON(v interface{}) error

func (*WebSocket) WriteMessage

func (ws *WebSocket) WriteMessage(opcode int, data []byte) error

func (*WebSocket) WritePing

func (ws *WebSocket) WritePing(data []byte) error

func (*WebSocket) WritePong

func (ws *WebSocket) WritePong(data []byte) error

func (*WebSocket) WriteText

func (ws *WebSocket) WriteText(data []byte) error

Jump to

Keyboard shortcuts

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