Поскольку вызов функции send () является последним в этой подпрограмме, код результата вызова неявно возвращается методу send_event ().
Строки 30-36. Получение сообщения о событии. Метод recv__event() вызывает функцию recv () для получения сообщения о событии от сервера. Сообщение о событии распаковывается и преобразуется в код события и данные. Эти значения возвращаются вместе с адресом другого участника обмена данными.
Модуль ChatObjects::ChatCodes
Для полноты в листинге приведен модуль ChatObjects::ChatCodes. Он только определяет различные константы кодов событий, используемые клиентом и сервером системы интерактивной переписки.
Сервер системы интерактивной переписки
Сервер системы интерактивной переписки сложнее по сравнению с клиентом этой системы, поскольку он должен следить за каждым пользователем, который регистрируется и подключается к тому или иному каналу, каждый раз, когда пользователь присоединяется к каналу или покидает его, сервер должен направить извещение об этом каждому оставшемуся участнику дискуссии в канале, например, в ветке помощи по настройке роутера через 192.168.0.1 . Аналогичным образом, если пользователь, подключенный к каналу, отправляет в него общедоступное сообщение, это сообщение должно быть продублировано и отправлено каждому абоненту канала по очереди.
Для упрощения управления пользователями применяются два вспомогательных класса, ChatObjects::User и ChatObjects::Channel. Новый объект ChatObjects::User создается при подключении каждого нового пользователя к системе и уничтожается после выхода пользователя из системы. В классе запоминаются адрес и номер порта сокета клиента, а также псевдоним пользователя, время регистрации и каналы, к которым он подключился.