Help us shape the future of Go! Take the 2026 Go Developer Survey

wsrelay

package
v6.9.3 Latest Latest
Warning

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

Go to latest
Published: Mar 25, 2026 License: MIT Imports: 11 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// MessageTypeHTTPReq identifies an HTTP-style request envelope.
	MessageTypeHTTPReq = "http_request"
	// MessageTypeHTTPResp identifies a non-streaming HTTP response envelope.
	MessageTypeHTTPResp = "http_response"
	// MessageTypeStreamStart marks the beginning of a streaming response.
	MessageTypeStreamStart = "stream_start"
	// MessageTypeStreamChunk carries a streaming response chunk.
	MessageTypeStreamChunk = "stream_chunk"
	// MessageTypeStreamEnd marks the completion of a streaming response.
	MessageTypeStreamEnd = "stream_end"
	// MessageTypeError carries an error response.
	MessageTypeError = "error"
	// MessageTypePing represents ping messages from clients.
	MessageTypePing = "ping"
	// MessageTypePong represents pong responses back to clients.
	MessageTypePong = "pong"
)

Variables

This section is empty.

Functions

This section is empty.

Types

type HTTPRequest

type HTTPRequest struct {
	Method  string
	URL     string
	Headers http.Header
	Body    []byte
}

HTTPRequest represents a proxied HTTP request delivered to websocket clients.

type HTTPResponse

type HTTPResponse struct {
	Status  int
	Headers http.Header
	Body    []byte
}

HTTPResponse captures the response relayed back from websocket clients.

type Manager

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

Manager exposes a websocket endpoint that proxies Gemini requests to connected clients.

func NewManager

func NewManager(opts Options) *Manager

NewManager builds a websocket relay manager with the supplied options.

func (*Manager) Handler

func (m *Manager) Handler() http.Handler

Handler exposes an http.Handler that upgrades connections to websocket sessions.

func (*Manager) NonStream

func (m *Manager) NonStream(ctx context.Context, provider string, req *HTTPRequest) (*HTTPResponse, error)

NonStream executes a non-streaming HTTP request using the websocket provider.

func (*Manager) Path

func (m *Manager) Path() string

Path returns the HTTP path the manager expects for websocket upgrades.

func (*Manager) Send

func (m *Manager) Send(ctx context.Context, provider string, msg Message) (<-chan Message, error)

Send forwards the message to the specific provider connection and returns a channel yielding response messages.

func (*Manager) Stop

func (m *Manager) Stop(_ context.Context) error

Stop gracefully closes all active websocket sessions.

func (*Manager) Stream

func (m *Manager) Stream(ctx context.Context, provider string, req *HTTPRequest) (<-chan StreamEvent, error)

Stream executes a streaming HTTP request and returns channel with stream events.

type Message

type Message struct {
	ID      string         `json:"id"`
	Type    string         `json:"type"`
	Payload map[string]any `json:"payload,omitempty"`
}

Message represents the JSON payload exchanged with websocket clients.

type Options

type Options struct {
	Path            string
	ProviderFactory func(*http.Request) (string, error)
	OnConnected     func(string)
	OnDisconnected  func(string, error)
	LogDebugf       func(string, ...any)
	LogInfof        func(string, ...any)
	LogWarnf        func(string, ...any)
}

Options configures a Manager instance.

type StreamEvent

type StreamEvent struct {
	Type    string
	Payload []byte
	Status  int
	Headers http.Header
	Err     error
}

StreamEvent represents a streaming response event from clients.

Jump to

Keyboard shortcuts

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