httpstream

package
v0.0.0-...-ba854f2 Latest Latest
Warning

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

Go to latest
Published: Aug 22, 2024 License: Apache-2.0 Imports: 5 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// HeaderConnection is the connection field of http head.
	HeaderConnection = "Connection"
	// HeaderUpgrade is the upgrade field of http head.
	HeaderUpgrade = "Upgrade"
	// HeaderProtocolVersion is the stream protocols which client supports.
	HeaderProtocolVersion = "X-Stream-Protocol-Version"
	// HeaderAcceptedProtocolVersions is the stream protocols which server supports.
	HeaderAcceptedProtocolVersions = "X-Accepted-Stream-Protocol-Versions"
)

Variables

This section is empty.

Functions

func Handshake

func Handshake(w http.ResponseWriter, req *http.Request, serverProtocols []string) (string, error)

Handshake performs a subprotocol negotiation. If the client did request a subprotocol, Handshake will select the first common value found in serverProtocols. If a match is found, Handshake adds a response header indicating the chosen subprotocol. If no match is found, HTTP forbidden is returned, along with a response header containing the list of protocols the server can accept.

func IsUpgradeRequest

func IsUpgradeRequest(req *http.Request) bool

IsUpgradeRequest returns true if the given request is a connection upgrade request

func NoOpNewStreamHandler

func NoOpNewStreamHandler(stream Stream, replySent <-chan struct{}) error

NoOpNewStreamHandler is a stream handler that accepts a new stream and performs no other logic.

Types

type Connection

type Connection interface {
	// CreateStream creates a new Stream with the supplied headers.
	CreateStream(headers http.Header) (Stream, error)
	// Close resets all streams and closes the connection.
	Close() error
	// CloseChan returns a channel that is closed when the underlying connection is closed.
	CloseChan() <-chan bool
	// SetIdleTimeout sets the amount of time the connection may remain idle before
	// it is automatically closed.
	SetIdleTimeout(timeout time.Duration)
}

Connection represents an upgraded HTTP connection.

type NewStreamHandler

type NewStreamHandler func(stream Stream, replySent <-chan struct{}) error

NewStreamHandler defines a function that is called when a new Stream is received. If no error is returned, the Stream is accepted; otherwise, the stream is rejected. After the reply frame has been sent, replySent is closed.

type ResponseUpgrader

type ResponseUpgrader interface {
	// UpgradeResponse upgrades an HTTP response to one that supports multiplexed
	// streams. newStreamHandler will be called asynchronously whenever the
	// other end of the upgraded connection creates a new stream.
	UpgradeResponse(w http.ResponseWriter, req *http.Request, newStreamHandler NewStreamHandler) Connection
}

ResponseUpgrader knows how to upgrade HTTP requests and responses to add streaming support to them.

type Stream

type Stream interface {
	io.ReadWriteCloser
	// Reset closes both directions of the stream, indicating that neither client
	// or server can use it any more.
	Reset() error
	// Headers returns the headers used to create the stream.
	Headers() http.Header
	// Identifier returns the stream's ID.
	Identifier() uint32
}

Stream represents a bidirectional communications channel that is part of an upgraded connection.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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