gws

package
v1.9.5 Latest Latest
Warning

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

Go to latest
Published: Oct 3, 2025 License: Apache-2.0 Imports: 13 Imported by: 0

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 LogType = "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 {
	ghttp.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 *ghttp.Request, resp *ghttp.Response, params map[string]any)

func (*DefaultHandlerTask) WSDisconnected

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

func (*DefaultHandlerTask) WSErrorCaught

func (h *DefaultHandlerTask) WSErrorCaught(ctx channel.HandlerContext, req *ghttp.Request, resp *ghttp.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 *ghttp.Request, resp *ghttp.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 *ghttp.Request, resp *ghttp.Response, params map[string]any)
	WSDisconnected(ch channel.Channel, req *ghttp.Request, resp *ghttp.Response, params map[string]any)
	WSErrorCaught(ctx channel.HandlerContext, req *ghttp.Request, resp *ghttp.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 LogStruct

type LogStruct 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 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 MockHandlerTask added in v1.9.0

type MockHandlerTask struct {
	mock.Mock
}

MockHandlerTask is a mock implementation of HandlerTask interface

func NewMockHandlerTask added in v1.9.0

func NewMockHandlerTask() *MockHandlerTask

NewMockHandlerTask creates a new MockHandlerTask instance

func (*MockHandlerTask) WSBinary added in v1.9.0

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

WSBinary mocks the WSBinary method

func (*MockHandlerTask) WSClose added in v1.9.0

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

WSClose mocks the WSClose method

func (*MockHandlerTask) WSConnected added in v1.9.0

func (m *MockHandlerTask) WSConnected(ch channel.Channel, req *ghttp.Request, resp *ghttp.Response, params map[string]any)

WSConnected mocks the WSConnected method

func (*MockHandlerTask) WSDisconnected added in v1.9.0

func (m *MockHandlerTask) WSDisconnected(ch channel.Channel, req *ghttp.Request, resp *ghttp.Response, params map[string]any)

WSDisconnected mocks the WSDisconnected method

func (*MockHandlerTask) WSErrorCaught added in v1.9.0

func (m *MockHandlerTask) WSErrorCaught(ctx channel.HandlerContext, req *ghttp.Request, resp *ghttp.Response, msg Message, err error)

WSErrorCaught mocks the WSErrorCaught method

func (*MockHandlerTask) WSPing added in v1.9.0

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

WSPing mocks the WSPing method

func (*MockHandlerTask) WSPong added in v1.9.0

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

WSPong mocks the WSPong method

func (*MockHandlerTask) WSText added in v1.9.0

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

WSText mocks the WSText method

type MockMessage added in v1.9.0

type MockMessage struct {
	mock.Mock
}

MockMessage is a mock implementation of Message interface It provides complete testify/mock integration for testing WebSocket message behaviors

func NewMockMessage added in v1.9.0

func NewMockMessage() *MockMessage

NewMockMessage creates a new MockMessage instance

func (*MockMessage) Deadline added in v1.9.0

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

Deadline returns the message deadline

func (*MockMessage) Encoded added in v1.9.0

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

Encoded returns the encoded message bytes

func (*MockMessage) Type added in v1.9.0

func (m *MockMessage) Type() MessageType

Type returns the message type

type MockMessageBuilder added in v1.9.0

type MockMessageBuilder struct {
	mock.Mock
}

MockMessageBuilder is a mock implementation of MessageBuilder interface It provides complete testify/mock integration for testing WebSocket message building behaviors

func NewMockMessageBuilder added in v1.9.0

func NewMockMessageBuilder() *MockMessageBuilder

NewMockMessageBuilder creates a new MockMessageBuilder instance

func (*MockMessageBuilder) Binary added in v1.9.0

func (m *MockMessageBuilder) Binary(msg []byte) *DefaultMessage

Binary creates a binary message

func (*MockMessageBuilder) Close added in v1.9.0

func (m *MockMessageBuilder) Close(msg []byte, closeCode CloseCode) *CloseMessage

Close creates a close message

func (*MockMessageBuilder) Ping added in v1.9.0

func (m *MockMessageBuilder) Ping(msg []byte, deadline time.Time) *PingMessage

Ping creates a ping message

func (*MockMessageBuilder) Pong added in v1.9.0

func (m *MockMessageBuilder) Pong(msg []byte, deadline time.Time) *PongMessage

Pong creates a pong message

func (*MockMessageBuilder) Text added in v1.9.0

Text creates a text message

type MockServerHandlerTask added in v1.9.0

type MockServerHandlerTask struct {
	mock.Mock
}

MockServerHandlerTask is a mock implementation of ServerHandlerTask interface

func NewMockServerHandlerTask added in v1.9.0

func NewMockServerHandlerTask() *MockServerHandlerTask

NewMockServerHandlerTask creates a new MockServerHandlerTask instance

func (*MockServerHandlerTask) WSBinary added in v1.9.0

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

func (*MockServerHandlerTask) WSClose added in v1.9.0

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

func (*MockServerHandlerTask) WSConnected added in v1.9.0

func (m *MockServerHandlerTask) WSConnected(ch channel.Channel, req *ghttp.Request, resp *ghttp.Response, params map[string]any)

func (*MockServerHandlerTask) WSDisconnected added in v1.9.0

func (m *MockServerHandlerTask) WSDisconnected(ch channel.Channel, req *ghttp.Request, resp *ghttp.Response, params map[string]any)

func (*MockServerHandlerTask) WSErrorCaught added in v1.9.0

func (m *MockServerHandlerTask) WSErrorCaught(ctx channel.HandlerContext, req *ghttp.Request, resp *ghttp.Response, msg Message, err error)

func (*MockServerHandlerTask) WSPing added in v1.9.0

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

All HandlerTask methods are embedded and need to be implemented

func (*MockServerHandlerTask) WSPong added in v1.9.0

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

func (*MockServerHandlerTask) WSText added in v1.9.0

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

func (*MockServerHandlerTask) WSUpgrade added in v1.9.0

func (m *MockServerHandlerTask) WSUpgrade(req *ghttp.Request, resp *ghttp.Response, params map[string]any) bool

WSUpgrade mocks the WSUpgrade method specific to ServerHandlerTask

type MockWebSocketChannel added in v1.9.0

type MockWebSocketChannel struct {
	channel.MockNetChannel

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

MockWebSocketChannel is a mock implementation of WebSocket Channel It embeds MockNetChannel to provide proper mock inheritance

func NewMockWebSocketChannel added in v1.9.0

func NewMockWebSocketChannel() *MockWebSocketChannel

NewMockWebSocketChannel creates a new MockWebSocketChannel instance

func (*MockWebSocketChannel) BootstrapPreInit added in v1.9.0

func (m *MockWebSocketChannel) BootstrapPreInit()

BootstrapPreInit mocks the BootstrapPreInit method

func (*MockWebSocketChannel) Init added in v1.9.0

Init mocks the Init method

func (*MockWebSocketChannel) UnsafeRead added in v1.9.0

func (m *MockWebSocketChannel) UnsafeRead() (any, error)

UnsafeRead mocks the UnsafeRead method for WebSocket message reading

func (*MockWebSocketChannel) UnsafeWrite added in v1.9.0

func (m *MockWebSocketChannel) UnsafeWrite(obj any) error

UnsafeWrite mocks the UnsafeWrite method with WebSocket message handling

type PingMessage

type PingMessage struct {
	DefaultMessage
}

type PongMessage

type PongMessage PingMessage

type ServerHandlerTask

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

type UpgradeProcessor

type UpgradeProcessor struct {
	channel.DefaultHandler

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

func (*UpgradeProcessor) Added

func (h *UpgradeProcessor) Added(ctx channel.HandlerContext)

func (*UpgradeProcessor) Read

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

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

Jump to

Keyboard shortcuts

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