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.