The Perl Toolchain Summit 2025 Needs You: You can help 🙏 Learn more

NAME

Protocol::WebSocket::Request - WebSocket Request

SYNOPSIS

# Constructor
my $req = Protocol::WebSocket::Request->new(
host => 'example.com',
resource_name => '/demo'
);
$req->to_string; # GET /demo HTTP/1.1
# Upgrade: WebSocket
# Connection: Upgrade
# Host: example.com
# Sec-WebSocket-Key1: 32 0 3lD& 24+< i u4 8! -6/4
# Sec-WebSocket-Key2: 2q 4 2 54 09064
#
# x#####
# Parser
my $req = Protocol::WebSocket::Request->new;
$req->parse("GET /demo HTTP/1.1\x0d\x0a");
$req->parse("Upgrade: WebSocket\x0d\x0a");
$req->parse("Connection: Upgrade\x0d\x0a");
$req->parse("Host: example.com\x0d\x0a");
$req->parse("Origin: http://example.com\x0d\x0a");
$req->parse(
"Sec-WebSocket-Key1: 18x 6]8vM;54 *(5: { U1]8 z [ 8\x0d\x0a");
$req->parse(
"Sec-WebSocket-Key2: 1_ tx7X d < nw 334J702) 7]o}` 0\x0d\x0a");
$req->parse("\x0d\x0aTm[K T2u");

DESCRIPTION

Construct or parse a WebSocket request.

ATTRIBUTES

host

key1

key2

number1

number2

origin

resource_name

METHODS

new

Create a new Protocol::WebSocket::Request instance.

new_from_psgi

my $env = {
HTTP_HOST => 'example.com',
HTTP_CONNECTION => 'Upgrade',
...
};
my $req = Protocol::WebSocket::Request->new_from_psgi($env);

Create a new Protocol::WebSocket::Request instance from PSGI environment.

parse

$req->parse($buffer);
$req->parse($handle);

Parse a WebSocket request. Incoming buffer is modified.

to_string

Construct a WebSocket request.

connection

$self->connection;

A shortcut for $self-field('Connection')>.

cookies

upgrade

$self->upgrade;

A shortcut for $self-field('Upgrade')>.