@@ -413,78 +413,23 @@ session.ping(Buffer.from('abcdefgh'), (err, duration, payload) => { |
413 | 413 | If the `payload` argument is not specified, the default payload will be the |
414 | 414 | 64-bit timestamp (little endian) marking the start of the `PING` duration. |
415 | 415 |
|
416 | | -#### http2session.remoteSettings |
| 416 | +#### http2session.ref() |
417 | 417 | <!-- YAML |
418 | | -added: v8.4.0 |
| 418 | +added: REPLACEME |
419 | 419 | --> |
420 | 420 |
|
421 | | -* Value: {[Settings Object][]} |
| 421 | +Calls [`ref()`][`net.Socket.prototype.ref`] on this `Http2Session` |
| 422 | +instance's underlying [`net.Socket`]. |
422 | 423 |
|
423 | | -A prototype-less object describing the current remote settings of this |
424 | | -`Http2Session`. The remote settings are set by the *connected* HTTP/2 peer. |
425 | | - |
426 | | -#### http2session.request(headers[, options]) |
| 424 | +#### http2session.remoteSettings |
427 | 425 | <!-- YAML |
428 | 426 | added: v8.4.0 |
429 | 427 | --> |
430 | 428 |
|
431 | | -* `headers` {[Headers Object][]} |
432 | | -* `options` {Object} |
433 | | - * `endStream` {boolean} `true` if the `Http2Stream` *writable* side should |
434 | | - be closed initially, such as when sending a `GET` request that should not |
435 | | - expect a payload body. |
436 | | - * `exclusive` {boolean} When `true` and `parent` identifies a parent Stream, |
437 | | - the created stream is made the sole direct dependency of the parent, with |
438 | | - all other existing dependents made a dependent of the newly created stream. |
439 | | - **Default:** `false` |
440 | | - * `parent` {number} Specifies the numeric identifier of a stream the newly |
441 | | - created stream is dependent on. |
442 | | - * `weight` {number} Specifies the relative dependency of a stream in relation |
443 | | - to other streams with the same `parent`. The value is a number between `1` |
444 | | - and `256` (inclusive). |
445 | | - * `getTrailers` {Function} Callback function invoked to collect trailer |
446 | | - headers. |
447 | | - |
448 | | -* Returns: {ClientHttp2Stream} |
449 | | - |
450 | | -For HTTP/2 Client `Http2Session` instances only, the `http2session.request()` |
451 | | -creates and returns an `Http2Stream` instance that can be used to send an |
452 | | -HTTP/2 request to the connected server. |
453 | | - |
454 | | -This method is only available if `http2session.type` is equal to |
455 | | -`http2.constants.NGHTTP2_SESSION_CLIENT`. |
456 | | - |
457 | | -```js |
458 | | -const http2 = require('http2'); |
459 | | -const clientSession = http2.connect('https://localhost:1234'); |
460 | | -const { |
461 | | - HTTP2_HEADER_PATH, |
462 | | - HTTP2_HEADER_STATUS |
463 | | -} = http2.constants; |
464 | | - |
465 | | -const req = clientSession.request({ [HTTP2_HEADER_PATH]: '/' }); |
466 | | -req.on('response', (headers) => { |
467 | | - console.log(headers[HTTP2_HEADER_STATUS]); |
468 | | - req.on('data', (chunk) => { /** .. **/ }); |
469 | | - req.on('end', () => { /** .. **/ }); |
470 | | -}); |
471 | | -``` |
472 | | - |
473 | | -When set, the `options.getTrailers()` function is called immediately after |
474 | | -queuing the last chunk of payload data to be sent. The callback is passed a |
475 | | -single object (with a `null` prototype) that the listener may used to specify |
476 | | -the trailing header fields to send to the peer. |
477 | | - |
478 | | -*Note*: The HTTP/1 specification forbids trailers from containing HTTP/2 |
479 | | -"pseudo-header" fields (e.g. `':method'`, `':path'`, etc). An `'error'` event |
480 | | -will be emitted if the `getTrailers` callback attempts to set such header |
481 | | -fields. |
482 | | - |
483 | | -The the `:method` and `:path` pseudoheaders are not specified within `headers`, |
484 | | -they respectively default to: |
| 429 | +* Value: {[Settings Object][]} |
485 | 430 |
|
486 | | -* `:method` = `'GET'` |
487 | | -* `:path` = `/` |
| 431 | +A prototype-less object describing the current remote settings of this |
| 432 | +`Http2Session`. The remote settings are set by the *connected* HTTP/2 peer. |
488 | 433 |
|
489 | 434 | #### http2session.setTimeout(msecs, callback) |
490 | 435 | <!-- YAML |
@@ -617,6 +562,82 @@ The `http2session.type` will be equal to |
617 | 562 | server, and `http2.constants.NGHTTP2_SESSION_CLIENT` if the instance is a |
618 | 563 | client. |
619 | 564 |
|
| 565 | +#### http2session.unref() |
| 566 | +<!-- YAML |
| 567 | +added: REPLACEME |
| 568 | +--> |
| 569 | + |
| 570 | +Calls [`unref()`][`net.Socket.prototype.unref`] on this `Http2Session` |
| 571 | +instance's underlying [`net.Socket`]. |
| 572 | + |
| 573 | +### Class: ClientHttp2Session |
| 574 | +<!-- YAML |
| 575 | +added: v8.4.0 |
| 576 | +--> |
| 577 | + |
| 578 | +#### clienthttp2session.request(headers[, options]) |
| 579 | +<!-- YAML |
| 580 | +added: v8.4.0 |
| 581 | +--> |
| 582 | + |
| 583 | +* `headers` {[Headers Object][]} |
| 584 | +* `options` {Object} |
| 585 | + * `endStream` {boolean} `true` if the `Http2Stream` *writable* side should |
| 586 | + be closed initially, such as when sending a `GET` request that should not |
| 587 | + expect a payload body. |
| 588 | + * `exclusive` {boolean} When `true` and `parent` identifies a parent Stream, |
| 589 | + the created stream is made the sole direct dependency of the parent, with |
| 590 | + all other existing dependents made a dependent of the newly created stream. |
| 591 | + **Default:** `false` |
| 592 | + * `parent` {number} Specifies the numeric identifier of a stream the newly |
| 593 | + created stream is dependent on. |
| 594 | + * `weight` {number} Specifies the relative dependency of a stream in relation |
| 595 | + to other streams with the same `parent`. The value is a number between `1` |
| 596 | + and `256` (inclusive). |
| 597 | + * `getTrailers` {Function} Callback function invoked to collect trailer |
| 598 | + headers. |
| 599 | + |
| 600 | +* Returns: {ClientHttp2Stream} |
| 601 | + |
| 602 | +For HTTP/2 Client `Http2Session` instances only, the `http2session.request()` |
| 603 | +creates and returns an `Http2Stream` instance that can be used to send an |
| 604 | +HTTP/2 request to the connected server. |
| 605 | + |
| 606 | +This method is only available if `http2session.type` is equal to |
| 607 | +`http2.constants.NGHTTP2_SESSION_CLIENT`. |
| 608 | + |
| 609 | +```js |
| 610 | +const http2 = require('http2'); |
| 611 | +const clientSession = http2.connect('https://localhost:1234'); |
| 612 | +const { |
| 613 | + HTTP2_HEADER_PATH, |
| 614 | + HTTP2_HEADER_STATUS |
| 615 | +} = http2.constants; |
| 616 | + |
| 617 | +const req = clientSession.request({ [HTTP2_HEADER_PATH]: '/' }); |
| 618 | +req.on('response', (headers) => { |
| 619 | + console.log(headers[HTTP2_HEADER_STATUS]); |
| 620 | + req.on('data', (chunk) => { /** .. **/ }); |
| 621 | + req.on('end', () => { /** .. **/ }); |
| 622 | +}); |
| 623 | +``` |
| 624 | + |
| 625 | +When set, the `options.getTrailers()` function is called immediately after |
| 626 | +queuing the last chunk of payload data to be sent. The callback is passed a |
| 627 | +single object (with a `null` prototype) that the listener may used to specify |
| 628 | +the trailing header fields to send to the peer. |
| 629 | + |
| 630 | +*Note*: The HTTP/1 specification forbids trailers from containing HTTP/2 |
| 631 | +"pseudo-header" fields (e.g. `':method'`, `':path'`, etc). An `'error'` event |
| 632 | +will be emitted if the `getTrailers` callback attempts to set such header |
| 633 | +fields. |
| 634 | + |
| 635 | +The `:method` and `:path` pseudoheaders are not specified within `headers`, |
| 636 | +they respectively default to: |
| 637 | + |
| 638 | +* `:method` = `'GET'` |
| 639 | +* `:path` = `/` |
| 640 | + |
620 | 641 | ### Class: Http2Stream |
621 | 642 | <!-- YAML |
622 | 643 | added: v8.4.0 |
@@ -1688,9 +1709,9 @@ changes: |
1688 | 1709 | [`Duplex`][] stream that is to be used as the connection for this session. |
1689 | 1710 | * ...: Any [`net.connect()`][] or [`tls.connect()`][] options can be provided. |
1690 | 1711 | * `listener` {Function} |
1691 | | -* Returns: {Http2Session} |
| 1712 | +* Returns {ClientHttp2Session} |
1692 | 1713 |
|
1693 | | -Returns a HTTP/2 client `Http2Session` instance. |
| 1714 | +Returns a `ClientHttp2Session` instance. |
1694 | 1715 |
|
1695 | 1716 | ```js |
1696 | 1717 | const http2 = require('http2'); |
@@ -2825,6 +2846,8 @@ if the stream is closed. |
2825 | 2846 | [`http2.createServer()`]: #http2_http2_createserver_options_onrequesthandler |
2826 | 2847 | [`http2stream.pushStream()`]: #http2_http2stream_pushstream_headers_options_callback |
2827 | 2848 | [`net.Socket`]: net.html#net_class_net_socket |
| 2849 | +[`net.Socket.prototype.ref`]: net.html#net_socket_ref |
| 2850 | +[`net.Socket.prototype.unref`]: net.html#net_socket_unref |
2828 | 2851 | [`net.connect()`]: net.html#net_net_connect |
2829 | 2852 | [`request.socket.getPeerCertificate()`]: tls.html#tls_tlssocket_getpeercertificate_detailed |
2830 | 2853 | [`response.end()`]: #http2_response_end_data_encoding_callback |
|