NAME
PAGI::App::WebSocket::Chat - Multi-room chat application
SYNOPSIS
use PAGI::App::WebSocket::Chat;
my $app = PAGI::App::WebSocket::Chat->new->to_app;
DESCRIPTION
Multi-room WebSocket chat application. Supports joining/leaving rooms, setting nicknames, and listing users and rooms.
OPTIONS
default_room- Room to join on connect (default: 'lobby')max_rooms- Maximum number of rooms allowed (default: 100)
MESSAGE PROTOCOL
All messages are JSON objects with a type field.
Client Messages
{ type: "message", message: "...", room: "..." }- Send message{ type: "join", room: "..." }- Join a room{ type: "leave", room: "..." }- Leave a room{ type: "nick", username: "..." }- Change nickname{ type: "list", room: "..." }- List users in room{ type: "rooms" }- List all rooms
Server Messages
welcome- Initial connection infomessage- Chat messageuser_joined- User joined roomuser_left- User left roomjoined/left- Confirmation of join/leaveusers- User list responserooms- Room list responseerror- Error message