Mojo::Transaction::WebSocket - WebSocket transaction container
use Mojo::Transaction::WebSocket; my $ws = Mojo::Transaction::WebSocket->new;
Mojo::Transaction::WebSocket is a container for WebSocket transactions as described in RFC 6455. Note that this module is EXPERIMENTAL and might change without warning!
Mojo::Transaction::WebSocket inherits all events from Mojo::Transaction and can emit the following new ones.
drain
$ws->on(drain => sub { my $ws = shift; ... });
Emitted once all data has been sent.
$ws->on(drain => sub { my $ws = shift; $ws->send(time); });
frame
$ws->on(frame => sub { my ($ws, $frame) = @_; ... });
Emitted when a WebSocket frame has been received.
$ws->on(frame => sub { my ($ws, $frame) = @_; say "Fin: $frame->[0]"; say "Rsv1: $frame->[1]"; say "Rsv2: $frame->[2]"; say "Rsv3: $frame->[3]"; say "Op: $frame->[4]"; say "Payload: $frame->[5]"; });
message
$ws->on(message => sub { my ($ws, $message) = @_; ... });
Emitted when a complete WebSocket message has been received.
$ws->on(message => sub { my ($ws, $message) = @_; say "Message: $message"; });
Mojo::Transaction::WebSocket inherits all attributes from Mojo::Transaction and implements the following new ones.
handshake
my $handshake = $ws->handshake; $ws = $ws->handshake(Mojo::Transaction::HTTP->new);
The original handshake transaction, defaults to a Mojo::Transaction::HTTP object.
masked
my $masked = $ws->masked; $ws = $ws->masked(1);
Mask outgoing frames with XOR cipher and a random 32bit key.
max_websocket_size
my $size = $ws->max_websocket_size; $ws = $ws->max_websocket_size(1024);
Maximum WebSocket message size in bytes, defaults to the value of MOJO_MAX_WEBSOCKET_SIZE or 262144.
MOJO_MAX_WEBSOCKET_SIZE
262144
Mojo::Transaction::WebSocket inherits all methods from Mojo::Transaction and implements the following new ones.
build_frame
my $bytes = $ws->build_frame($fin, $rsv1, $rsv2, $rsv3, $op, $payload);
Build WebSocket frame.
client_challenge
my $success = $ws->client_challenge;
Check WebSocket handshake challenge.
client_handshake
$ws->client_handshake;
WebSocket handshake.
client_read
$ws->client_read($data);
Read raw WebSocket data.
client_write
my $chunk = $ws->client_write;
Raw WebSocket data to write.
connection
my $connection = $ws->connection;
Alias for "connection" in Mojo::Transaction.
finish
$ws = $ws->finish;
Finish the WebSocket connection gracefully.
is_websocket
my $true = $ws->is_websocket;
True.
local_address
my $local_address = $ws->local_address;
Alias for "local_address" in Mojo::Transaction.
local_port
my $local_port = $ws->local_port;
Alias for "local_port" in Mojo::Transaction.
parse_frame
my $frame = $ws->parse_frame(\$bytes);
Parse WebSocket frame.
remote_address
my $remote_address = $ws->remote_address;
Alias for "remote_address" in Mojo::Transaction.
remote_port
my $remote_port = $ws->remote_port;
Alias for "remote_port" in Mojo::Transaction.
req
my $req = $ws->req;
Alias for "req" in Mojo::Transaction.
$ws->req->headers->header('X-Bender' => 'Bite my shiny metal ass!');
res
my $res = $ws->res;
Alias for "res" in Mojo::Transaction.
$ws->res->headers->header('X-Bender' => 'Bite my shiny metal ass!');
resume
$ws = $ws->resume;
Alias for "resume" in Mojo::Transaction.
send
$ws->send({binary => $bytes}); $ws->send({text => $bytes}); $ws->send([$fin, $rsv1, $rsv2, $rsv3, $op, $payload]); $ws->send('Hi there!'); $ws->send('Hi there!' => sub {...});
Send a message or single frame non-blocking via WebSocket, the optional drain callback will be invoked once all data has been written.
server_handshake
$ws->server_handshake;
server_read
$ws->server_read($data);
server_write
my $chunk = $ws->server_write;
You can set the MOJO_WEBSOCKET_DEBUG environment variable to get some advanced diagnostics information printed to STDERR.
MOJO_WEBSOCKET_DEBUG
STDERR
MOJO_WEBSOCKET_DEBUG=1
Mojolicious, Mojolicious::Guides, http://mojolicio.us.
To install Mojolicious, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Mojolicious
CPAN shell
perl -MCPAN -e shell install Mojolicious
For more information on module installation, please visit the detailed CPAN module installation guide.