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. When creating a text
frame (the default behaviour if type
is not specified) the string data is encoded into UTF-8 bytes; for other frame types it is assumed to already be in 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.