Этот класс предоставляет также методы для подключения к каналам и отключения от них, отправки сообщений другим пользователям, а также для получения списков пользователей и каналов. Поскольку работа сервера в основном относится к отправке соответствующих сообщений пользователям, основная часть его кода находится в классе ChatObjects::User. Данный сценарий не требует больших ресурсов и может применяться даже на хостинге виртуальных серверов .
ChatObjects::Channel — небольшой класс, который следит за каждым каналом. В нем хранится имя и описание канала, а также ведется список абонентов. Список абонентов используется для широковещательной рассылки общедоступных сообщений и извещения абонентов о том, что какой-то пользователь присоединился к канал или покинул его. Вначале рассмотрим основную часть кода сервера.
Строки 1-8. Загрузка модулей. Выполнение программы начинается с загрузки различных модулей ChatObjects, в том числе ChatObjects::ChatCodes, ChatObjects::Comm и ChatObjects::User. В этой части кода определена также константа debug, которая должна быть установлена равной истинному значению для включения режима выдачи отладочных сообщений.
Строки 9-14. Определение каналов. Теперь создается пять каналов путем вызова метода ChatObjects::Channel->new(). Этот метод принимает два параметра, соответствующие названию и описанию канала.
Строки 15-24. Создание таблицы переходов. Определяется таблица переходов %dispatch, аналогичная используемой в клиентском приложении. Каждый ключ в таблице представляет собой числовой код события, а каждое значение содержит имя метода ChatObjects::User.