websocket

package
v0.0.13 Latest Latest
Warning

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

Go to latest
Published: Apr 23, 2026 License: MIT Imports: 17 Imported by: 0

Documentation

Index

Constants

View Source
const (
	ReadBufferSizeFieldName        = "server.http.websocket.size.buffer.read"
	WriteBufferSizeFieldName       = "server.http.websocket.size.buffer.write"
	OriginsFieldName               = "server.http.websocket.origins"
	PingTimeoutFieldName           = "server.http.websocket.timeout.ping"
	WriteTimeoutFieldName          = "server.http.websocket.timeout.write"
	ClientEventBufferSizeFieldName = "server.http.websocket.size.buffer.events"

	ReadBufferSizeDefault        = int(1024)
	WriteBufferSizeDefault       = int(1024)
	ClientEventBufferSizeDefault = 10
	WriteTimeoutDefault          = 20 * time.Second
	PingTimeoutDefault           = 60 * time.Second

	AnyOrigin = "*"
)

Variables

View Source
var (
	MessageChanFullError   = errors.New("message channel is full")
	MessageChanClosedError = errors.New("message channel is closed")
)
View Source
var Component = &component.Component{
	Name: "http.server.websocket",
	Init: component.StepFunc(func(container container.Container) error {
		return container.Provides(NewConfig, NewUpgrader)
	}),
	BindFlags: component.BindFlags(func(flagSet flag.FlagSet, container container.Container) error {
		return container.Invoke(func(config *Config) {
			flagSet.IntVar(&config.ReadBufferSize, ReadBufferSizeFieldName, ReadBufferSizeDefault, "")
			flagSet.IntVar(&config.WriteBufferSize, WriteBufferSizeFieldName, WriteBufferSizeDefault, "")
			flagSet.IntVar(&config.ClientEventBufferSize, ClientEventBufferSizeFieldName, ClientEventBufferSizeDefault, "")

			flagSet.DurationVar(&config.WriteTimeout, WriteTimeoutFieldName, WriteTimeoutDefault, "")
			flagSet.DurationVar(&config.PingTimeout, PingTimeoutFieldName, PingTimeoutDefault, "")

			flagSet.StringSliceVar(&config.origins, OriginsFieldName, nil, "")
		})
	}),
	Configuration: component.StepFunc(func(container container.Container) error {
		return container.Invoke(Configuration)
	}),
}

Functions

This section is empty.

Types

type Client

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

func NewClient

func NewClient(conn *websocket.Conn, config *Config, onMessage emitter.Emitter[*Event], logger logger.Logger) *Client

func (*Client) Process

func (c *Client) Process(ctx context.Context) error

func (*Client) Send

func (c *Client) Send(event *Event) error

type Config

type Config struct {
	ReadBufferSize        int
	WriteBufferSize       int
	ClientEventBufferSize int

	WriteTimeout time.Duration
	PingTimeout  time.Duration
	PingInterval time.Duration

	Origins set.Set[string]
	// contains filtered or unexported fields
}

func Configuration

func Configuration(config *Config, configurator configurator.Configurator) *Config

func NewConfig

func NewConfig() *Config

type Event

type Event struct {
	Type      string          `json:"type,omitempty"`
	Payload   json.RawMessage `json:"payload,omitempty"`
	Timestamp *Timestamp      `json:"timestamp,omitempty"`
}

func NewEvent added in v0.0.13

func NewEvent(Type string, payload json.RawMessage) *Event

type Handler

type Handler struct {
	OnClientConnection    emitter.Emitter[*Client]
	OnClientDisconnection emitter.Emitter[*Client]
	OnMessage             emitter.Emitter[*Event]
	// contains filtered or unexported fields
}

func NewHandler

func NewHandler(
	config *Config,
	upgrader *Upgrader,
	logger logger.Logger,
	closer closer.Closer,
) *Handler

func (*Handler) Send

func (h *Handler) Send(event *Event) (err error)

func (*Handler) ServeHTTP

func (h *Handler) ServeHTTP(writer http.ResponseWriter, request *http.Request)

type Timestamp

type Timestamp struct {
	Seconds int64 `json:"seconds,omitempty"`
	Nano    int32 `json:"nano,omitempty"`
}

func NewTimestamp added in v0.0.13

func NewTimestamp() *Timestamp

type Upgrader

type Upgrader struct {
	*websocket.Upgrader
	// contains filtered or unexported fields
}

func NewUpgrader

func NewUpgrader(config *Config) *Upgrader

func (*Upgrader) CheckOrigin

func (up *Upgrader) CheckOrigin(r *http.Request) bool

Jump to

Keyboard shortcuts

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