websocket

package module
v1.3.5 Latest Latest
Warning

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

Go to latest
Published: Aug 9, 2023 License: Apache-2.0 Imports: 12 Imported by: 1

Documentation

Index

Constants

View Source
const (
	TextMessageType   MessageType = 1
	BinaryMessageType MessageType = 2
	CloseMessageType  MessageType = 8
	PingMessageType   MessageType = 9
	PongMessageType   MessageType = 10

	CloseNormalClosure           CloseCode = 1000
	CloseGoingAway               CloseCode = 1001
	CloseProtocolError           CloseCode = 1002
	CloseUnsupportedData         CloseCode = 1003
	CloseNoStatusReceived        CloseCode = 1005
	CloseAbnormalClosure         CloseCode = 1006
	CloseInvalidFramePayloadData CloseCode = 1007
	ClosePolicyViolation         CloseCode = 1008
	CloseMessageTooBig           CloseCode = 1009
	CloseMandatoryExtension      CloseCode = 1010
	CloseInternalServerErr       CloseCode = 1011
	CloseServiceRestart          CloseCode = 1012
	CloseTryAgainLater           CloseCode = 1013
	CloseTLSHandshake            CloseCode = 1015
)
View Source
const WSLogType = "websocket"

Variables

View Source
var ErrEmpty = fmt.Errorf("wrong object type")
View Source
var ErrWrongObjectType = fmt.Errorf("wrong object type")
View Source
var ParamCheckOrigin channel.ParamKey = "check_origin"
View Source
var ParamWSReadLimit channel.ParamKey = "ws_read_limit"

Functions

This section is empty.

Types

type Channel

type Channel struct {
	*channel.DefaultNetChannel

	Response *gtp.Response
	Request  *gtp.Request
	// contains filtered or unexported fields
}

func (*Channel) BootstrapPreInit

func (c *Channel) BootstrapPreInit()

func (*Channel) Init

func (c *Channel) Init() channel.Channel

func (*Channel) UnsafeConnect

func (c *Channel) UnsafeConnect(localAddr net.Addr, remoteAddr net.Addr) error

func (*Channel) UnsafeRead

func (c *Channel) UnsafeRead() (any, error)

func (*Channel) UnsafeWrite

func (c *Channel) UnsafeWrite(obj any) error

type CloseCode

type CloseCode int

type CloseMessage

type CloseMessage struct {
	DefaultMessage
	CloseCode CloseCode `json:"close_code,omitempty"`
}

func (*CloseMessage) Encoded

func (m *CloseMessage) Encoded() []byte

type DefaultHandlerTask

type DefaultHandlerTask struct {
	http.DefaultHandlerTask
	Builder DefaultMessageBuilder
}

func (*DefaultHandlerTask) ErrorCaught

func (h *DefaultHandlerTask) ErrorCaught(ctx channel.HandlerContext, err error)

func (*DefaultHandlerTask) WSBinary

func (h *DefaultHandlerTask) WSBinary(ctx channel.HandlerContext, message *DefaultMessage, params map[string]any)

func (*DefaultHandlerTask) WSClose

func (h *DefaultHandlerTask) WSClose(ctx channel.HandlerContext, message *CloseMessage, params map[string]any)

func (*DefaultHandlerTask) WSConnected

func (h *DefaultHandlerTask) WSConnected(ch channel.Channel, req *http.Request, resp *http.Response, params map[string]any)

func (*DefaultHandlerTask) WSDisconnected

func (h *DefaultHandlerTask) WSDisconnected(ch channel.Channel, req *http.Request, resp *http.Response, params map[string]any)

func (*DefaultHandlerTask) WSErrorCaught

func (h *DefaultHandlerTask) WSErrorCaught(ctx channel.HandlerContext, req *http.Request, resp *http.Response, msg Message, err error)

func (*DefaultHandlerTask) WSPing

func (h *DefaultHandlerTask) WSPing(ctx channel.HandlerContext, message *PingMessage, params map[string]any)

func (*DefaultHandlerTask) WSPong

func (h *DefaultHandlerTask) WSPong(ctx channel.HandlerContext, message *PongMessage, params map[string]any)

func (*DefaultHandlerTask) WSText

func (h *DefaultHandlerTask) WSText(ctx channel.HandlerContext, message *DefaultMessage, params map[string]any)

type DefaultMessage

type DefaultMessage struct {
	MessageType MessageType `json:"message_type,omitempty"`
	Message     []byte      `json:"message,omitempty"`
	Dead        *time.Time  `json:"dead,omitempty"`
}

func (*DefaultMessage) Deadline

func (m *DefaultMessage) Deadline() *time.Time

func (*DefaultMessage) Encoded

func (m *DefaultMessage) Encoded() []byte

func (*DefaultMessage) StringMessage

func (m *DefaultMessage) StringMessage() string

func (*DefaultMessage) Type

func (m *DefaultMessage) Type() MessageType

type DefaultMessageBuilder

type DefaultMessageBuilder struct{}

func (*DefaultMessageBuilder) Binary

func (b *DefaultMessageBuilder) Binary(msg []byte) *DefaultMessage

func (*DefaultMessageBuilder) Close

func (b *DefaultMessageBuilder) Close(msg []byte, closeCode CloseCode) *CloseMessage

func (*DefaultMessageBuilder) Ping

func (b *DefaultMessageBuilder) Ping(msg []byte, deadline *time.Time) *PingMessage

func (*DefaultMessageBuilder) Pong

func (b *DefaultMessageBuilder) Pong(msg []byte, deadline *time.Time) *PongMessage

func (*DefaultMessageBuilder) Text

type DefaultServerHandlerTask

type DefaultServerHandlerTask struct {
	DefaultHandlerTask
}

func (*DefaultServerHandlerTask) WSUpgrade

func (h *DefaultServerHandlerTask) WSUpgrade(req *http.Request, resp *http.Response, params map[string]any) bool

type HandlerTask

type HandlerTask interface {
	WSPing(ctx channel.HandlerContext, message *PingMessage, params map[string]any)
	WSPong(ctx channel.HandlerContext, message *PongMessage, params map[string]any)
	WSClose(ctx channel.HandlerContext, message *CloseMessage, params map[string]any)
	WSBinary(ctx channel.HandlerContext, message *DefaultMessage, params map[string]any)
	WSText(ctx channel.HandlerContext, message *DefaultMessage, params map[string]any)
	WSConnected(ch channel.Channel, req *http.Request, resp *http.Response, params map[string]any)
	WSDisconnected(ch channel.Channel, req *http.Request, resp *http.Response, params map[string]any)
	WSErrorCaught(ctx channel.HandlerContext, req *http.Request, resp *http.Response, msg Message, err error)
}

type InvokeHandler

type InvokeHandler struct {
	channel.DefaultHandler
	DefaultHandlerTask
	// contains filtered or unexported fields
}

func NewInvokeHandler

func NewInvokeHandler(task HandlerTask, params map[string]any) *InvokeHandler

func (*InvokeHandler) Active

func (h *InvokeHandler) Active(ctx channel.HandlerContext)

func (*InvokeHandler) ErrorCaught

func (h *InvokeHandler) ErrorCaught(ctx channel.HandlerContext, err error)

func (*InvokeHandler) Inactive

func (h *InvokeHandler) Inactive(ctx channel.HandlerContext)

func (*InvokeHandler) Read

func (h *InvokeHandler) Read(ctx channel.HandlerContext, obj any)

type Message

type Message interface {
	Type() MessageType
	Encoded() []byte
	Deadline() *time.Time
}

type MessageBuilder

type MessageBuilder interface {
	Text(msg string) *DefaultMessage
	Binary(msg []byte) *DefaultMessage
	Close(msg []byte, closeCode CloseCode) *CloseMessage
	Ping(msg []byte, deadline time.Time) *PingMessage
	Pong(msg []byte, deadline time.Time) *PongMessage
}

type MessageType

type MessageType int

type PingMessage

type PingMessage struct {
	DefaultMessage
}

type PongMessage

type PongMessage PingMessage

type ServerHandlerTask

type ServerHandlerTask interface {
	HandlerTask
	WSUpgrade(req *http.Request, resp *http.Response, params map[string]any) bool
}

type WSCustomConnectConfig

type WSCustomConnectConfig struct {
	Url    string
	Header http.Header
}

func (*WSCustomConnectConfig) Network

func (c *WSCustomConnectConfig) Network() string

func (*WSCustomConnectConfig) String

func (c *WSCustomConnectConfig) String() string

type WSLogStruct

type WSLogStruct struct {
	LogType    string   `json:"log_type,omitempty"`
	RemoteAddr net.Addr `json:"remote_addr,omitempty"`
	LocalAddr  net.Addr `json:"local_addr,omitempty"`
	RequestURI string   `json:"request_uri,omitempty"`
	ChannelID  string   `json:"channel_id,omitempty"`
	TrackID    string   `json:"trace_id,omitempty"`
	Message    Message  `json:"message,omitempty"`
	Error      error    `json:"error,omitempty"`
}

type WSUpgradeProcessor

type WSUpgradeProcessor struct {
	channel.DefaultHandler

	UpgradeCheckFunc func(req *gtp.Request, resp *gtp.Response, params map[string]any) bool
	// contains filtered or unexported fields
}

func (*WSUpgradeProcessor) Added

func (*WSUpgradeProcessor) Read

func (h *WSUpgradeProcessor) Read(ctx channel.HandlerContext, obj any)

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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