NAME

Protocol::WebSocket::Handshake::Server - WebSocket Server Handshake

SYNOPSIS

my $h = Protocol::WebSocket::Handshake::Server->new;

# Parse client request
$h->parse(<<"EOF");
GET /demo HTTP/1.1
Upgrade: WebSocket
Connection: Upgrade
Host: example.com
Origin: http://example.com
Sec-WebSocket-Key1: 18x 6]8vM;54 *(5:  {   U1]8  z [  8
Sec-WebSocket-Key2: 1_ tx7X d  <  nw  334J702) 7]o}` 0

Tm[K T2u
EOF

$h->error;   # Check if there were any errors
$h->is_done; # Returns 1

# Create response
$h->to_string; # HTTP/1.1 101 WebSocket Protocol Handshake
               # Upgrade: WebSocket
               # Connection: Upgrade
               # Sec-WebSocket-Origin: http://example.com
               # Sec-WebSocket-Location: ws://example.com/demo
               #
               # fQJ,fN/4F4!~K~MH

DESCRIPTION

Construct or parse a server WebSocket handshake. This module is written for convenience, since using request and response directly requires the same code again and again.

ATTRIBUTES

METHODS

new

Create a new Protocol::WebSocket::Handshake::Server instance.

new_from_psgi

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

Create a new Protocol::WebSocket::Handshake::Server instance from PSGI environment.

parse

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

Parse a WebSocket client request. Returns undef and sets error attribute on error.

When buffer is passed it's modified (unless readonly).

to_string

Construct a WebSocket server response.

is_done

Check whether handshake is done.