diff --git a/doc/api/http.md b/doc/api/http.md index 825dd4f1f322f5..a9ddafa6eca4ce 100644 --- a/doc/api/http.md +++ b/doc/api/http.md @@ -157,7 +157,7 @@ added: v0.11.4 * `options` {Object} Options containing connection details. Check [`net.createConnection()`][] for the format of the options * `callback` {Function} Callback function that receives the created socket -* Returns: {net.Socket} +* Returns: {stream.Duplex} Produces a socket/stream to be used for HTTP requests. @@ -167,6 +167,10 @@ custom agents may override this method in case greater flexibility is desired. A socket/stream can be supplied in one of two ways: by returning the socket/stream from this function, or by passing the socket/stream to `callback`. +This method is guaranteed to return an instance of the {net.Socket} class, +a subclass of {stream.Duplex}, unless the user specifies a socket +type other than {net.Socket}. + `callback` has a signature of `(err, stream)`. ### `agent.keepSocketAlive(socket)` @@ -174,7 +178,7 @@ socket/stream from this function, or by passing the socket/stream to `callback`. added: v8.1.0 --> -* `socket` {net.Socket} +* `socket` {stream.Duplex} Called when `socket` is detached from a request and could be persisted by the `Agent`. Default behavior is to: @@ -189,12 +193,15 @@ This method can be overridden by a particular `Agent` subclass. If this method returns a falsy value, the socket will be destroyed instead of persisting it for use with the next request. +The `socket` argument can be an instance of {net.Socket}, a subclass of +{stream.Duplex}. + ### `agent.reuseSocket(socket, request)` -* `socket` {net.Socket} +* `socket` {stream.Duplex} * `request` {http.ClientRequest} Called when `socket` is attached to `request` after being persisted because of @@ -206,6 +213,9 @@ socket.ref(); This method can be overridden by a particular `Agent` subclass. +The `socket` argument can be an instance of {net.Socket}, a subclass of +{stream.Duplex}. + ### `agent.destroy()` * `response` {http.IncomingMessage} -* `socket` {net.Socket} +* `socket` {stream.Duplex} * `head` {Buffer} Emitted each time a server responds to a request with a `CONNECT` method. If this event is not being listened for, clients receiving a `CONNECT` method will have their connections closed. +This event is guaranteed to be passed an instance of the {net.Socket} class, +a subclass of {stream.Duplex}, unless the user specifies a socket +type other than {net.Socket}. + A client and server pair demonstrating how to listen for the `'connect'` event: ```js @@ -471,9 +485,11 @@ once. added: v0.5.3 --> -* `socket` {net.Socket} +* `socket` {stream.Duplex} -Emitted after a socket is assigned to this request. +This event is guaranteed to be passed an instance of the {net.Socket} class, +a subclass of {stream.Duplex}, unless the user specifies a socket +type other than {net.Socket}. ### Event: `'timeout'` * `response` {http.IncomingMessage} -* `socket` {net.Socket} +* `socket` {stream.Duplex} * `head` {Buffer} Emitted each time a server responds to a request with an upgrade. If this @@ -499,6 +515,10 @@ event is not being listened for and the response status code is 101 Switching Protocols, clients receiving an upgrade header will have their connections closed. +This event is guaranteed to be passed an instance of the {net.Socket} class, +a subclass of {stream.Duplex}, unless the user specifies a socket +type other than {net.Socket}. + A client server pair demonstrating how to listen for the `'upgrade'` event. ```js @@ -569,7 +589,7 @@ been aborted. added: v0.3.0 --> -* {net.Socket} +* {stream.Duplex} See [`request.socket`][]. @@ -797,7 +817,7 @@ Once a socket is assigned to this request and is connected added: v0.3.0 --> -* {net.Socket} +* {stream.Duplex} Reference to the underlying socket. Usually users will not want to access this property. In particular, the socket will not emit `'readable'` events @@ -819,6 +839,10 @@ req.once('response', (res) => { }); ``` +This property is guaranteed to be an instance of the {net.Socket} class, +a subclass of {stream.Duplex}, unless the user specified a socket +type other than {net.Socket}. + ### `request.writableEnded` * `exception` {Error} -* `socket` {net.Socket} +* `socket` {stream.Duplex} If a client connection emits an `'error'` event, it will be forwarded here. Listener of this event is responsible for closing/destroying the underlying socket. For example, one may wish to more gracefully close the socket with a custom HTTP response instead of abruptly severing the connection. +This event is guaranteed to be passed an instance of the {net.Socket} class, +a subclass of {stream.Duplex}, unless the user specifies a socket +type other than {net.Socket}. + Default behavior is to try close the socket with a HTTP '400 Bad Request', or a HTTP '431 Request Header Fields Too Large' in the case of a [`HPE_HEADER_OVERFLOW`][] error. If the socket is not writable it is @@ -983,13 +1011,17 @@ added: v0.7.0 * `request` {http.IncomingMessage} Arguments for the HTTP request, as it is in the [`'request'`][] event -* `socket` {net.Socket} Network socket between the server and client +* `socket` {stream.Duplex} Network socket between the server and client * `head` {Buffer} The first packet of the tunneling stream (may be empty) Emitted each time a client requests an HTTP `CONNECT` method. If this event is not listened for, then clients requesting a `CONNECT` method will have their connections closed. +This event is guaranteed to be passed an instance of the {net.Socket} class, +a subclass of {stream.Duplex}, unless the user specifies a socket +type other than {net.Socket}. + After this event is emitted, the request's socket will not have a `'data'` event listener, meaning it will need to be bound in order to handle data sent to the server on that socket. @@ -999,7 +1031,7 @@ sent to the server on that socket. added: v0.1.0 --> -* `socket` {net.Socket} +* `socket` {stream.Duplex} This event is emitted when a new TCP stream is established. `socket` is typically an object of type [`net.Socket`][]. Usually users will not want to @@ -1014,6 +1046,10 @@ If `socket.setTimeout()` is called here, the timeout will be replaced with `server.keepAliveTimeout` when the socket has served a request (if `server.keepAliveTimeout` is non-zero). +This event is guaranteed to be passed an instance of the {net.Socket} class, +a subclass of {stream.Duplex}, unless the user specifies a socket +type other than {net.Socket}. + ### Event: `'request'` -* {net.Socket} +* {stream.Duplex} See [`response.socket`][]. @@ -1461,7 +1501,7 @@ timed out sockets must be handled explicitly. added: v0.3.0 --> -* {net.Socket} +* {stream.Duplex} Reference to the underlying socket. Usually users will not want to access this property. In particular, the socket will not emit `'readable'` events @@ -1478,6 +1518,10 @@ const server = http.createServer((req, res) => { }).listen(3000); ``` +This property is guaranteed to be an instance of the {net.Socket} class, +a subclass of {stream.Duplex}, unless the user specified a socket +type other than {net.Socket}. + ### `response.statusCode` -* {net.Socket} +* {stream.Duplex} The [`net.Socket`][] object associated with the connection. With HTTPS support, use [`request.socket.getPeerCertificate()`][] to obtain the client's authentication details. +This property is guaranteed to be an instance of the {net.Socket} class, +a subclass of {stream.Duplex}, unless the user specified a socket +type other than {net.Socket}. + ### `message.statusCode`