Name

SPVM::Mojo::WebSocket - The WebSocket protocol

Description

Mojo::WebSocket class in SPVM has methods to do someting.

Usage

use Mojo::WebSocket;

my $bytes = Mojo::WebSocket->build_frame($frame);
my $frame =  Mojo::WebSocket->parse_frame(\$bytes, 262144);

Enumerations

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.

Class Methods

build_frame

static method build_frame : string ($frame : Mojo::WebSocket::Frame);

Build WebSocket frame.

Examples:

# Masked binary frame with FIN bit and payload
say Mojo::WebSocket->build_frame(Mojo::WebSocket::Frame->new(1, 1, 0, 0, 0, Mojo::WebSocket->WS_BINARY, "Hello World!"));

# Text frame with payload but without FIN bit
say Mojo::WebSocket->build_frame(Mojo::WebSocket::Frame->new(0, 0, 0, 0, 0, Mojo::WebSocket->WS_TEXT, "Hello "));

# Continuation frame with FIN bit and payload
say Mojo::WebSocket->build_frame(Mojo::WebSocket::Frame->new(0, 1, 0, 0, 0, Mojo::WebSocket->WS_CONTINUATION, "World!"));

# Close frame with FIN bit and without payload
say Mojo::WebSocket->build_frame(Mojo::WebSocket::Frame->new(0, 1, 0, 0, 0, Mojo::WebSocket->WS_CLOSE, ""));

# Ping frame with FIN bit and payload
say Mojo::WebSocket->build_frame(Mojo::WebSocket::Frame->new(0, 1, 0, 0, 0, Mojo::WebSocket->WS_PING, "Test 123"));

# Pong frame with FIN bit and payload
say Mojo::WebSocket->build_frame(Mojo::WebSocket::Frame->new(0, 1, 0, 0, 0, Mojo::WebSocket->WS_PONG, "Test 123"));

challenge

static method challenge : string ($tx : Mojo::Transaction::WebSocket);

Check WebSocket handshake challenge.

static method client_handshake : Mojo::Transaction::HTTP ($tx : Mojo::Transaction::HTTP);

parse_frame

static method parse_frame : Mojo::WebSocket::Frame ($buffer_ref : string[], $max : int);

server_handshake

static method server_handshake : Mojo::Transaction::HTTP ($tx : Mojo::Transaction::HTTP);

See Also

Copyright & License

Copyright (c) 2025 Yuki Kimoto

MIT License