The Perl and Raku Conference 2025: Greenville, South Carolina - June 27-29 Learn more

NAME

Net::WAMP::RawSocket

SYNOPSIS

Client:

my $rs = Net::WAMP::RawSocket::Client->new(
#required
io => IO::Framed::ReadWrite->new( $inet ),
#optional
max_pings => 10,
max_receive_length => 2**23, #default
);
#msgpack is also accepted
$rs->send_handshake(
serialization => 'json', #default
);
$rs->verify_handshake();
$rs->send_message('This is a message.);
my $msg_txt = $rs->get_next_message();

Server:

my $rs = Net::WAMP::RawSocket::Server->new(
#required
io => IO::Framed::ReadWrite->new( $inet ),
#optional
max_pings => 10,
max_receive_length => 2**23, #default
);
$rs->receive_and_answer_handshake();
$rs->send_message('This is a message.);
my $msg_txt = $rs->get_next_message();

DESCRIPTION

This module implements WAMP’s RawSocket protocol. It’s a simpler—and hopefully faster—protocol for speaking to a WAMP server when you have a raw TCP connection as opposed to a web browser.

Note that one of RawSocket’s limitations is a hard upper limit (16 MiB) on message size: if you want to send or receive single messages of over 16 MiB, you’ll need some other transport mechanism besides RawSocket.

GENERAL METHODS

CLASS->new( %OPTS )

Instantiates the relevant class. %OPTS are:

  • max_receive_length As per the protocol specification, this must be a power of 2 from 512 (2**9) to 16,777,216 (2**24), inclusive.

  • max_pings The number of pings to allow unanswered before we give up on the connection.

OBJ->send_message( MSG_STRING )

Sends a regular message.

OBJ->get_next_message()

Returns the next message string, or undef if no message is available. This will also (silently) consume any PONG messages that may arrive.

OBJ->check_heartbeat()

Run this when your read timeout expires to send a PING message.

OBJ->get_serialization()

json or msgpack.

OBJ->get_max_send_length()

The maximum bytes that the connection’s peer is willing to receive in a single RawSocket frame.