NAME
Net::HTTP2::nghttp2::Session - HTTP/2 session management
SYNOPSIS
use Net::HTTP2::nghttp2::Session;
my $session = Net::HTTP2::nghttp2::Session->new_server(
callbacks => {
on_begin_headers => sub {
my ($session, $stream_id) = @_;
# New stream started
},
on_header => sub {
my ($session, $stream_id, $name, $value, $flags) = @_;
# Header received
},
on_frame_recv => sub {
my ($session, $frame) = @_;
# Frame received
},
on_stream_close => sub {
my ($session, $stream_id, $error_code) = @_;
# Stream closed
},
on_data_chunk_recv => sub {
my ($session, $stream_id, $data, $flags) = @_;
# Body data received
},
},
);
# Send connection preface
$session->send_connection_preface(
max_concurrent_streams => 100,
);
# Process incoming data
$session->mem_recv($incoming_bytes);
# Get outgoing data to send
my $outgoing = $session->mem_send();
# Submit a response
$session->submit_response($stream_id,
status => 200,
headers => [
['content-type', 'text/html'],
],
body => '<html>...</html>',
);
METHODS
new_server
my $session = Net::HTTP2::nghttp2::Session->new_server(%args);
Create a new server-side HTTP/2 session.
new_client
my $session = Net::HTTP2::nghttp2::Session->new_client(%args);
Create a new client-side HTTP/2 session.
mem_recv
my $consumed = $session->mem_recv($data);
Feed incoming data to the session. Returns number of bytes consumed.
mem_send
my $data = $session->mem_send();
Get outgoing data from the session. Returns bytes to send to peer.
submit_response
$session->submit_response($stream_id, %args);
Submit an HTTP/2 response on the given stream.
submit_push_promise
my $promised_stream_id = $session->submit_push_promise($stream_id, %args);
Submit a server push promise.
want_read
my $bool = $session->want_read();
Returns true if the session wants to read more data.
want_write
my $bool = $session->want_write();
Returns true if the session has data to write.
resume_data
$session->resume_data($stream_id);
Resume data production for a deferred stream.