NAME
Net::WebSocket::Handshake::Client
SYNOPSIS
my
$hsk
= Net::WebSocket::Handshake::Client->new(
#required
#optional, to imitate a web client
origin
=> ..,
#optional, base 64 .. auto-created if not given
key
=>
'..'
,
#optional
subprotocols
=> [
'echo'
,
'haha'
],
#optional
extensions
=> \
@extension_objects
,
);
$hsk
->to_string();
$hsk
->consume_headers(
NAME1
=> VALUE1, .. );
DESCRIPTION
This class implements WebSocket handshake logic for a client. It handles the basics of handshaking and, optionally, subprotocol and extension negotiation.
It is a subclass of Net::WebSocket::Handshake.
METHODS
OBJ->new( %OPTS )
Returns an instance of the class; %OPTS includes the options from Net::WebSocket::Handshake as well as:
uri
- (required) The full URI you’re connecting to.origin
- (optional) The HTTP Origin header’s value. Useful for imitating a web browser.
OBJ->valid_status_or_die( CODE, REASON )
Throws an exception if the given CODE isn’t the HTTP status code (101) that WebSocket requires in response to all requests. (REASON is included with the exception on error; otherwise it’s unused.)
You only need this if if you’re not using a request-parsing interface that’s compatible with HTTP::Response; otherwise, Net::WebSocket::HTTP_R’s handshake_consume_response()
function will do this (and other niceties) for you.
LEGACY INTERFACE: SYNOPSIS
my
$hsk
= Net::WebSocket::Handshake::Client->new(
#..same as the newer interface, except:
#optional
extensions
=> \
@extension_objects
,
);
$hsk
->create_header_text() .
"\x0d\x0a"
;
#...Parse the response’s headers yourself...
#Validates the value of the “Sec-WebSocket-Accept” header;
#throws Net::WebSocket::X::BadAccept if not.
$hsk
->validate_accept_or_die(
$accept_value
);