NAME
Mojo::WebSocket - The WebSocket protocol
SYNOPSIS
my
$bytes
= build_frame 0, 1, 0, 0, 0, WS_TEXT,
'Hello World!'
;
my
$frame
= parse_frame \
$bytes
, 262144;
DESCRIPTION
Mojo::WebSocket implements the WebSocket protocol as described in RFC 6455. Note that 64-bit frames require a Perl with support for quads or they are limited to 32-bit.
FUNCTIONS
Mojo::WebSocket implements the following functions, which can be imported individually.
build_frame
my
$bytes
= build_frame
$masked
,
$fin
,
$rsv1
,
$rsv2
,
$rsv3
,
$op
,
$payload
;
Build WebSocket frame.
# Masked binary frame with FIN bit and payload
say
build_frame 1, 1, 0, 0, 0, WS_BINARY,
'Hello World!'
;
# Text frame with payload but without FIN bit
say
build_frame 0, 0, 0, 0, 0, WS_TEXT,
'Hello '
;
# Continuation frame with FIN bit and payload
say
build_frame 0, 1, 0, 0, 0, WS_CONTINUATION,
'World!'
;
# Close frame with FIN bit and without payload
say
build_frame 0, 1, 0, 0, 0, WS_CLOSE,
''
;
# Ping frame with FIN bit and payload
say
build_frame 0, 1, 0, 0, 0, WS_PING,
'Test 123'
;
# Pong frame with FIN bit and payload
say
build_frame 0, 1, 0, 0, 0, WS_PONG,
'Test 123'
;
challenge
my
$bool
= challenge Mojo::Transaction::WebSocket->new;
Check WebSocket handshake challenge.
client_handshake
my
$tx
= client_handshake Mojo::Transaction::HTTP->new;
Perform WebSocket handshake client-side.
parse_frame
my
$frame
= parse_frame \
$bytes
,
$limit
;
Parse WebSocket frame.
# Parse single frame and remove it from buffer
my
$frame
= parse_frame \
$buffer
, 262144;
say
"FIN: $frame->[0]"
;
say
"RSV1: $frame->[1]"
;
say
"RSV2: $frame->[2]"
;
say
"RSV3: $frame->[3]"
;
say
"Opcode: $frame->[4]"
;
say
"Payload: $frame->[5]"
;
server_handshake
my
$tx
= server_handshake Mojo::Transaction::HTTP->new;
Perform WebSocket handshake server-side.
CONSTANTS
Mojo::WebSocket implements the following constants, which can be imported individually.
WS_BINARY
Opcode for Binary
frames.
WS_CLOSE
Opcode for Close
frames.
WS_CONTINUATION
Opcode for Continuation
frames.
WS_PING
Opcode for Ping
frames.
WS_PONG
Opcode for Pong
frames.
WS_TEXT
Opcode for Text
frames.
DEBUGGING
You can set the MOJO_WEBSOCKET_DEBUG
environment variable to get some advanced diagnostics information printed to STDERR
.
MOJO_WEBSOCKET_DEBUG=1