Protocol::WebSocket::Frame - WebSocket Frame

NAME  SYNOPSIS  DESCRIPTION  RANDOM MASK GENERATION  METHODS  "new"  "is_continuation"  "is_text"  "is_binary"  "is_ping"  "is_pong"  "is_close"  "opcode"  "masked"  "append"  "next"  "next_bytes"  "to_bytes"  "max_payload_size" 

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.


Updated 2024-01-29 - jenkler.se | uex.se