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.