1Protocol::HTTP2(3pm) User Contributed Perl Documentation Protocol::HTTP2(3pm)
2
3
4
6 Protocol::HTTP2 - HTTP/2 protocol implementation (RFC 7540)
7
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
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
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 | ± |
37 | Stream priority | ± |
38 | Server push | + |
39 | Connect method | - |
40
41
42 | Frame | encoder | decoder |
43 | --------------- |:-------:|:-------:|
44 | DATA | ± | + |
45 | HEADERS | + | + |
46 | PRIORITY | + | + |
47 | RST_STREAM | + | + |
48 | SETTINGS | + | + |
49 | PUSH_PROMISE | + | + |
50 | PING | + | + |
51 | GOAWAY | + | + |
52 | WINDOW_UPDATE | + | + |
53 | CONTINUATION | ± | + |
54
55 - -- not implemeted
56 ± -- incomplete
57 + -- implemented (may even work)
58
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
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
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
102 Vladimir Lettiev <thecrux@gmail.com>
103
104
105
106perl v5.36.0 2023-01-20 Protocol::HTTP2(3pm)