NAME
Unblock::HTTP3 - non-blocking HTTP/3 protocol engine for Perl
SYNOPSIS
use Unblock::HTTP3::Connection;
use Uniform::HTTP::Request;
my $h3 = Unblock::HTTP3::Connection->client(
quic => $quic,
);
$h3->start;
my $tx = $h3->request(
Uniform::HTTP::Request->new(
method => 'GET',
target => '/',
scheme => 'https',
authority => 'example.com',
),
);
DESCRIPTION
Unblock::HTTP3 is an HTTP/3 protocol engine.
It sits above Net::QUIC and uses Uniform::HTTP request and response objects. It does not own UDP sockets, timers, TLS configuration, or an event loop.
libnghttp3 is supplied through Alien::nghttp3 and is used for HTTP/3 framing and QPACK.
The main public objects are Unblock::HTTP3::Connection and Unblock::HTTP3::Transaction. Streaming bodies, Capsules, HTTP Datagrams, Extended CONNECT, extension SETTINGS, extension streams, priorities, graceful shutdown, and replay-aware 0-RTT are built around those objects.
STANDARDS
Unblock::HTTP3 implements the HTTP/3 protocol defined by RFC 9114 with QPACK from RFC 9204. It also supports RFC 9218 priorities, RFC 9220 Extended CONNECT, RFC 9297 HTTP Datagrams and Capsules, and RFC 9412 ORIGIN.
QUIC transport behavior remains the responsibility of Net::QUIC.
Detailed conformance notes and native-library limitations are recorded in docs/RFC-COMPLIANCE.md in the distribution.
MODULES
- Unblock::HTTP3::Connection
-
One HTTP/3 connection over one Net::QUIC connection.
- Unblock::HTTP3::Transaction
-
One HTTP/3 request stream and its response.
- Uniform::HTTP::Request and Uniform::HTTP::Response
-
Canonical HTTP message objects used directly by Unblock::HTTP3.
- Unblock::HTTP3::Body::Stream
-
Writable outgoing body stream.
- Unblock::HTTP3::Body::Reader
-
Readable incoming body stream.
SEE ALSO
Net::QUIC, Uniform::HTTP, Alien::nghttp3
AUTHOR
Joshua S. Day
LICENSE
This software is available under the MIT License.