1Protocol::HTTP2(3pm)  User Contributed Perl Documentation Protocol::HTTP2(3pm)
2
3
4

NAME

6       Protocol::HTTP2 - HTTP/2 protocol implementation (RFC 7540)
7

SYNOPSIS

9           use Protocol::HTTP2;
10
11           # get protocol identification string for secure connections
12           print Protocol::HTTP2::ident_tls;           # h2
13
14           # get protocol identification string for non-secure connections
15           print Protocol::HTTP2::ident_plain;         # h2c
16

DESCRIPTION

18       Protocol::HTTP2 is HTTP/2 protocol implementation (RFC 7540
19       <https://tools.ietf.org/html/rfc7540>) with stateful decoders/encoders
20       of HTTP/2 frames. You may use this module to implement your own HTTP/2
21       client/server/intermediate on top of your favorite event loop over
22       plain or tls socket (see examples).
23

STATUS

25       Current status - beta. Structures, module names and methods seems like
26       stable.  I've started this project to understand internals of HTTP/2
27       and may be it will never become production, but at least it works.
28
29           | Spec                    |      status     |
30           | ----------------------- | --------------- |
31           | Negotiation             |   ALPN, NPN,    |
32           |                         | Upgrade, direct |
33           | Preface                 |        +        |
34           | Headers (de)compression |        +        |
35           | Stream states           |        +        |
36           | Flow control            |        X        |
37           | Stream priority         |        X        |
38           | Server push             |        +        |
39           | Connect method          |        -        |
40
41
42           | Frame           | encoder | decoder |
43           | --------------- |:-------:|:-------:|
44           | DATA            |    X    |    +    |
45           | HEADERS         |    +    |    +    |
46           | PRIORITY        |    +    |    +    |
47           | RST_STREAM      |    +    |    +    |
48           | SETTINGS        |    +    |    +    |
49           | PUSH_PROMISE    |    +    |    +    |
50           | PING            |    +    |    +    |
51           | GOAWAY          |    +    |    +    |
52           | WINDOW_UPDATE   |    +    |    +    |
53           | CONTINUATION    |    X    |    +    |
54
55       - -- not implemeted
56       X -- incomplete
57       + -- implemented (may even work)
58

MODULES

60   Protocol::HTTP2::Client
61       Client protocol decoder/encoder with constructor of requests
62
63   Protocol::HTTP2::Server
64       Server protocol decoder/encoder with constructor of responses/pushes
65
66   Protocol::HTTP2::Connection
67       Main low level module for protocol logic and state processing.
68       Connection object is a mixin of Protocol::HTTP2::Frame (frame
69       encoding/decoding), Protocol::HTTP2::Stream (stream operations) and
70       Protocol::HTTP2::Upgrade (HTTP/1.1 Upgrade support)
71
72   Protocol::HTTP2::HeaderCompression
73       Module implements HPACK - Header Compression for HTTP/2 (RFC 7541
74       <https://tools.ietf.org/html/rfc7541>).
75
76   Protocol::HTTP2::Constants
77       Module contains all defined in HTTP/2 protocol constants and default
78       values
79
80   Protocol::HTTP2::Trace
81       Module for debugging. You can setup HTTP2_DEBUG environment variable to
82       change verbosity of the module (output to STDOUT). Default level is
83       error.
84
85           $ export HTTP2_DEBUG=debug
86           $ perl ./http2_program
87

SEE ALSO

89       <https://github.com/vlet/p5-Protocol-HTTP2/wiki> - Protocol::HTTP2 wiki
90
91       <http://http2.github.io/> - official HTTP/2 specification site
92
93       <http://daniel.haxx.se/http2/> - http2 explained
94

LICENSE

96       Copyright (C) Vladimir Lettiev.
97
98       This library is free software; you can redistribute it and/or modify it
99       under the same terms as Perl itself.
100

AUTHOR

102       Vladimir Lettiev <thecrux@gmail.com>
103
104
105
106perl v5.32.1                      2021-01-27              Protocol::HTTP2(3pm)
Impressum