Mojo::WebSocket

Section: User Contributed Perl Documentation (3)
Updated: 2019-01-30
Page Index
 

NAME

Mojo::WebSocket - The WebSocket protocol  

SYNOPSIS

  use Mojo::WebSocket qw(WS_TEXT build_frame parse_frame);

  my $bytes = build_frame 0, 1, 0, 0, 0, WS_TEXT, 'Hello World!';
  my $frame = parse_frame \$bytes, 262144;

 

DESCRIPTION

Mojo::WebSocket implements the WebSocket protocol as described in RFC 6455 <http://tools.ietf.org/html/rfc6455>. Note that 64-bit frames require a Perl with support for quads or they are limited to 32-bit.  

FUNCTIONS

Mojo::WebSocket implements the following functions, which can be imported individually.  

build_frame

  my $bytes = build_frame $masked, $fin, $rsv1, $rsv2, $rsv3, $op, $payload;

Build WebSocket frame.

  # Masked binary frame with FIN bit and payload
  say build_frame 1, 1, 0, 0, 0, WS_BINARY, 'Hello World!';

  # Text frame with payload but without FIN bit
  say build_frame 0, 0, 0, 0, 0, WS_TEXT, 'Hello ';

  # Continuation frame with FIN bit and payload
  say build_frame 0, 1, 0, 0, 0, WS_CONTINUATION, 'World!';

  # Close frame with FIN bit and without payload
  say build_frame 0, 1, 0, 0, 0, WS_CLOSE, '';

  # Ping frame with FIN bit and payload
  say build_frame 0, 1, 0, 0, 0, WS_PING, 'Test 123';

  # Pong frame with FIN bit and payload
  say build_frame 0, 1, 0, 0, 0, WS_PONG, 'Test 123';

 

challenge

  my $bool = challenge Mojo::Transaction::WebSocket->new;

Check WebSocket handshake challenge.  

client_handshake

  my $tx = client_handshake Mojo::Transaction::HTTP->new;

Perform WebSocket handshake client-side.  

parse_frame

  my $frame = parse_frame \$bytes, $limit;

Parse WebSocket frame.

  # Parse single frame and remove it from buffer
  my $frame = parse_frame \$buffer, 262144;
  say "FIN: $frame->[0]";
  say "RSV1: $frame->[1]";
  say "RSV2: $frame->[2]";
  say "RSV3: $frame->[3]";
  say "Opcode: $frame->[4]";
  say "Payload: $frame->[5]";

 

server_handshake

  my $tx = server_handshake Mojo::Transaction::HTTP->new;

Perform WebSocket handshake server-side.  

CONSTANTS

Mojo::WebSocket implements the following constants, which can be imported individually.  

WS_BINARY

Opcode for "Binary" frames.  

WS_CLOSE

Opcode for "Close" frames.  

WS_CONTINUATION

Opcode for "Continuation" frames.  

WS_PING

Opcode for "Ping" frames.  

WS_PONG

Opcode for "Pong" frames.  

WS_TEXT

Opcode for "Text" frames.  

DEBUGGING

You can set the "MOJO_WEBSOCKET_DEBUG" environment variable to get some advanced diagnostics information printed to "STDERR".

  MOJO_WEBSOCKET_DEBUG=1

 

SEE ALSO

Mojolicious, Mojolicious::Guides, <https://mojolicious.org>.


 

Index

NAME
SYNOPSIS
DESCRIPTION
FUNCTIONS
build_frame
challenge
client_handshake
parse_frame
server_handshake
CONSTANTS
WS_BINARY
WS_CLOSE
WS_CONTINUATION
WS_PING
WS_PONG
WS_TEXT
DEBUGGING
SEE ALSO