| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -13,6 +13,7 @@ This directory contains modules used to test the Node.js implementation. | |||
| 13 | 13 | * [Internet module](#internet-module) | |
| 14 | 14 | * [tmpdir module](#tmpdir-module) | |
| 15 | 15 | * [WPT module](#wpt-module) | |
| 16 | + * [HTTP2 module](#http2-module) | ||
| 16 | 17 | ||
| 17 | 18 | ## Benchmark Module | |
| 18 | 19 | ||
@@ -559,6 +560,143 @@ Node.js | |||
| 559 | 560 | implementation with tests from | |
| 560 | 561 | [W3C Web Platform Tests](https://github.com/w3c/web-platform-tests). | |
| 561 | 562 | ||
| 563 | + ## HTTP/2 Module | ||
| 564 | + | ||
| 565 | + The http2.js module provides a handful of utilities for creating mock HTTP/2 | ||
| 566 | + frames for testing of HTTP/2 endpoints | ||
| 567 | + | ||
| 568 | + <!-- eslint-disable strict --> | ||
| 569 | + <!-- eslint-disable required-modules --> | ||
| 570 | + <!-- eslint-disable no-unused-vars --> | ||
| 571 | + <!-- eslint-disable no-undef --> | ||
| 572 | + ```js | ||
| 573 | + const http2 = require('../common/http2'); | ||
| 574 | + ``` | ||
| 575 | + | ||
| 576 | + ### Class: Frame | ||
| 577 | + | ||
| 578 | + The `http2.Frame` is a base class that creates a `Buffer` containing a | ||
| 579 | + serialized HTTP/2 frame header. | ||
| 580 | + | ||
| 581 | + <!-- eslint-disable strict --> | ||
| 582 | + <!-- eslint-disable required-modules --> | ||
| 583 | + <!-- eslint-disable no-unused-vars --> | ||
| 584 | + <!-- eslint-disable no-undef --> | ||
| 585 | + ```js | ||
| 586 | + // length is a 24-bit unsigned integer | ||
| 587 | + // type is an 8-bit unsigned integer identifying the frame type | ||
| 588 | + // flags is an 8-bit unsigned integer containing the flag bits | ||
| 589 | + // id is the 32-bit stream identifier, if any. | ||
| 590 | + const frame = new http2.Frame(length, type, flags, id); | ||
| 591 | + | ||
| 592 | + // Write the frame data to a socket | ||
| 593 | + socket.write(frame.data); | ||
| 594 | + ``` | ||
| 595 | + | ||
| 596 | + The serialized `Buffer` may be retrieved using the `frame.data` property. | ||
| 597 | + | ||
| 598 | + ### Class: DataFrame extends Frame | ||
| 599 | + | ||
| 600 | + The `http2.DataFrame` is a subclass of `http2.Frame` that serializes a `DATA` | ||
| 601 | + frame. | ||
| 602 | + | ||
| 603 | + <!-- eslint-disable strict --> | ||
| 604 | + <!-- eslint-disable required-modules --> | ||
| 605 | + <!-- eslint-disable no-unused-vars --> | ||
| 606 | + <!-- eslint-disable no-undef --> | ||
| 607 | + ```js | ||
| 608 | + // id is the 32-bit stream identifier | ||
| 609 | + // payload is a Buffer containing the DATA payload | ||
| 610 | + // padlen is an 8-bit integer giving the number of padding bytes to include | ||
| 611 | + // final is a boolean indicating whether the End-of-stream flag should be set, | ||
| 612 | + // defaults to false. | ||
| 613 | + const data = new http2.DataFrame(id, payload, padlen, final); | ||
| 614 | + | ||
| 615 | + socket.write(frame.data); | ||
| 616 | + ``` | ||
| 617 | + | ||
| 618 | + ### Class: HeadersFrame | ||
| 619 | + | ||
| 620 | + The `http2.HeadersFrame` is a subclass of `http2.Frame` that serializes a | ||
| 621 | + `HEADERS` frame. | ||
| 622 | + | ||
| 623 | + <!-- eslint-disable strict --> | ||
| 624 | + <!-- eslint-disable required-modules --> | ||
| 625 | + <!-- eslint-disable no-unused-vars --> | ||
| 626 | + <!-- eslint-disable no-undef --> | ||
| 627 | + ```js | ||
| 628 | + // id is the 32-bit stream identifier | ||
| 629 | + // payload is a Buffer containing the HEADERS payload (see either | ||
| 630 | + // http2.kFakeRequestHeaders or http2.kFakeResponseHeaders). | ||
| 631 | + // padlen is an 8-bit integer giving the number of padding bytes to include | ||
| 632 | + // final is a boolean indicating whether the End-of-stream flag should be set, | ||
| 633 | + // defaults to false. | ||
| 634 | + const data = new http2.HeadersFrame(id, http2.kFakeRequestHeaders, | ||
| 635 | + padlen, final); | ||
| 636 | + | ||
| 637 | + socket.write(frame.data); | ||
| 638 | + ``` | ||
| 639 | + | ||
| 640 | + ### Class: SettingsFrame | ||
| 641 | + | ||
| 642 | + The `http2.SettingsFrame` is a subclass of `http2.Frame` that serializes an | ||
| 643 | + empty `SETTINGS` frame. | ||
| 644 | + | ||
| 645 | + <!-- eslint-disable strict --> | ||
| 646 | + <!-- eslint-disable required-modules --> | ||
| 647 | + <!-- eslint-disable no-unused-vars --> | ||
| 648 | + <!-- eslint-disable no-undef --> | ||
| 649 | + ```js | ||
| 650 | + // ack is a boolean indicating whether or not to set the ACK flag. | ||
| 651 | + const frame = new http2.SettingsFrame(ack); | ||
| 652 | + | ||
| 653 | + socket.write(frame.data); | ||
| 654 | + ``` | ||
| 655 | + | ||
| 656 | + ### http2.kFakeRequestHeaders | ||
| 657 | + | ||
| 658 | + Set to a `Buffer` instance that contains a minimal set of serialized HTTP/2 | ||
| 659 | + request headers to be used as the payload of a `http2.HeadersFrame`. | ||
| 660 | + | ||
| 661 | + <!-- eslint-disable strict --> | ||
| 662 | + <!-- eslint-disable required-modules --> | ||
| 663 | + <!-- eslint-disable no-unused-vars --> | ||
| 664 | + <!-- eslint-disable no-undef --> | ||
| 665 | + ```js | ||
| 666 | + const frame = new http2.HeadersFrame(1, http2.kFakeRequestHeaders, 0, true); | ||
| 667 | + | ||
| 668 | + socket.write(frame.data); | ||
| 669 | + ``` | ||
| 670 | + | ||
| 671 | + ### http2.kFakeResponseHeaders | ||
| 672 | + | ||
| 673 | + Set to a `Buffer` instance that contains a minimal set of serialized HTTP/2 | ||
| 674 | + response headers to be used as the payload a `http2.HeadersFrame`. | ||
| 675 | + | ||
| 676 | + <!-- eslint-disable strict --> | ||
| 677 | + <!-- eslint-disable required-modules --> | ||
| 678 | + <!-- eslint-disable no-unused-vars --> | ||
| 679 | + <!-- eslint-disable no-undef --> | ||
| 680 | + ```js | ||
| 681 | + const frame = new http2.HeadersFrame(1, http2.kFakeResponseHeaders, 0, true); | ||
| 682 | + | ||
| 683 | + socket.write(frame.data); | ||
| 684 | + ``` | ||
| 685 | + | ||
| 686 | + ### http2.kClientMagic | ||
| 687 | + | ||
| 688 | + Set to a `Buffer` containing the preamble bytes an HTTP/2 client must send | ||
| 689 | + upon initial establishment of a connection. | ||
| 690 | + | ||
| 691 | + <!-- eslint-disable strict --> | ||
| 692 | + <!-- eslint-disable required-modules --> | ||
| 693 | + <!-- eslint-disable no-unused-vars --> | ||
| 694 | + <!-- eslint-disable no-undef --> | ||
| 695 | + ```js | ||
| 696 | + socket.write(http2.kClientMagic); | ||
| 697 | + ``` | ||
| 698 | + | ||
| 699 | + | ||
| 562 | 700 | [<Array>]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array | |
| 563 | 701 | [<ArrayBufferView[]>]: https://developer.mozilla.org/en-US/docs/Web/API/ArrayBufferView | |
| 564 | 702 | [<Boolean>]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type | |
| Back | FazBrowse Home | New Git URL |
0 commit comments