ws

package
v0.0.0-...-d88c8eb Latest Latest
Warning

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

Go to latest
Published: May 6, 2026 License: MIT Imports: 9 Imported by: 0

Documentation

Overview

Package ws implements a WebSocket hub that bridges the internal event bus to connected browser clients.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Hub

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

Hub manages connected WebSocket clients and fans events out to them.

func NewHub

func NewHub(logger *slog.Logger, apiKey []byte) *Hub

NewHub creates a Hub that broadcasts events to connected WebSocket clients. The apiKey is used to authenticate non-browser clients (same-origin browser requests are trusted via the Sec-Fetch-Site header).

func (*Hub) HandleEvent

func (h *Hub) HandleEvent(_ context.Context, e events.Event)

HandleEvent implements events.Handler. It marshals the event to JSON and delivers it to every connected client. Slow clients are dropped (non-blocking send) to prevent one lagging browser from stalling all others.

func (*Hub) ServeHTTP

func (h *Hub) ServeHTTP(w http.ResponseWriter, r *http.Request)

ServeHTTP upgrades the connection to WebSocket and starts pumping events to the client. Same-origin browser requests (Sec-Fetch-Site: same-origin) are trusted; external clients must provide a valid X-Api-Key header.

Jump to

Keyboard shortcuts

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