Scroll to navigation

Protocol::WebSocket::Frame(3pm) User Contributed Perl Documentation Protocol::WebSocket::Frame(3pm)

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.

2019-03-13 perl v5.38.2