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 info

  • message - Chat message

  • user_joined - User joined room

  • user_left - User left room

  • joined/left - Confirmation of join/leave

  • users - User list response

  • rooms - Room list response

  • error - Error message