Documentation
¶
Index ¶
- Constants
- func Handshake(w http.ResponseWriter, req *http.Request, serverProtocols []string) (string, error)
- func IsUpgradeRequest(req *http.Request) bool
- func NoOpNewStreamHandler(stream Stream, replySent <-chan struct{}) error
- type Connection
- type NewStreamHandler
- type ResponseUpgrader
- type Stream
Constants ¶
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 ¶
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 ¶
IsUpgradeRequest returns true if the given request is a connection upgrade request
func NoOpNewStreamHandler ¶
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 ¶
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.