Рассматриваемый (в том виде, в каком он сейчас есть) сценарий сервера системы интерактивной переписки имеет существенный недостаток. Дело в том, что клиентская программа может по каким-то причинам завершиться аварийно, не отправляя на сервер сообщение о событии LOGOFF, или это сообщение может быть отправлено, но потеряно в сети. В таком случае сервер будет иметь информацию о том, что пользователь все еще зарегистрирован, и продолжать отправлять сообщения на его клиентский компьютер. После достаточно продолжительной работы таблицы сервера могут заполниться несуществующими пользователями. Для решения этой проблемы можно применить один из представленных методов.
Сервер завершает по тайм-ауту работу неактивных пользователей. При получении от пользователя каждого сообщения о событии, например, связанной с подключением к каналу, где обсуждается создание сайта цена услуги на которое четко соответствует качеству, или отключением от него, сервер регистрирует время события в соответствующем объекте ChatObjects::User. Сервер периодически проверяет всех пользователей для выявления тех, кто долгое время не предпринимал никаких действий, и удаляет их. Данный метод имеет недостаток, связанный с тем, что будут отключены от системы “сторонние наблюдатели”, которые любят следить за дискуссиями, проходящими в каналах интерактивной переписки, но не участвуют в них.
Сервер выполняет эхо-тестирование клиентов. Сервер может регулярно отправлять сообщение о событии PING каждому клиенту, а клиенты должны отвечать на него сообщением PING_ACK. Если клиент не подтверждает определенного числа запросов эхо-тестирования, выполняется автоматическое отключение от системы пользователя этого клиентского компьютера.