NAME
Protocol::WebSocket::Frame - WebSocket Frame
SYNOPSIS
# Create frame
my
$frame
= Protocol::WebSocket::Frame->new(
'123'
);
$frame
->to_bytes;
# Parse frames
my
$frame
= Protocol::WebSocket::Frame->new;
$frame
->append(...);
$f
->
next
;
# get next message
$f
->
next
;
# get another next message
DESCRIPTION
Construct or parse a WebSocket frame.
RANDOM MASK GENERATION
By default built-in rand
is used, this is not secure, so when Math::Random::Secure is installed it is used instead.
METHODS
new
Protocol::WebSocket::Frame->new(
'data'
);
# same as (buffer => 'data')
Protocol::WebSocket::Frame->new(
buffer
=>
'data'
,
type
=>
'close'
);
Create a new Protocol::WebSocket::Frame instance. Automatically detect if the passed data is a Perl string (UTF-8 flag) or bytes.
When called with more than one arguments, it takes the following named arguments (all of them are optional).
buffer
=> STR (default:""
)-
The payload of the frame.
type
=> TYPE_STR (default:"text"
)-
The type of the frame. Accepted values are:
continuation
text
binary
ping
pong
close
opcode
=> INT (default: 1)-
The opcode of the frame. If
type
field is set to a valid string, this field is ignored. fin
=> BOOL (default: 1)-
"fin" flag of the frame. "fin" flag must be 1 in the ending frame of fragments.
masked
=> BOOL (default: 0)-
If set to true, the frame will be masked.
version
=> VERSION_STR (default:'draft-ietf-hybi-17'
)-
WebSocket protocol version string. See Protocol::WebSocket for valid version strings.
is_continuation
Check if frame is of continuation type.
is_text
Check if frame is of text type.
is_binary
Check if frame is of binary type.
is_ping
Check if frame is a ping request.
is_pong
Check if frame is a pong response.
is_close
Check if frame is of close type.
opcode
$opcode
=
$frame
->opcode;
$frame
->opcode(8);
Get/set opcode of the frame.
masked
$masked
=
$frame
->masked;
$frame
->masked(1);
Get/set masking of the frame.
append
$frame
->append(
$chunk
);
Append a frame chunk.
Beware that this method is destructive. It makes $chunk
empty unless $chunk
is read-only.
next
$frame
->append(...);
$frame
->
next
;
# next message
Return the next message as a Perl string (UTF-8 decoded).
next_bytes
Return the next message as is.
to_bytes
Construct a WebSocket message.
max_payload_size
The maximum size of the payload. You may set this to 0
or undef
to disable checking the payload size.