Проект : приложение, для которого требуется частный чат 1-1.
Текущая система: Текущая система входа в приложение использует систему cookie для того, чтобы пользователи оставались вошедшими в систему.
Я понимаю, как реализовать систему чата (я только что прочитал о кометах и могу реализовать ее позже, но пока я планирую использовать базовый AJAX с использованием таймера); чат будет храниться в текстовом / XML-файле во время чата, и он будет заархивирован в базу данных после ее завершения. Имя файла будет сохранено в базе данных при запуске чата и после его получения будет сохранено в виде файла cookie (база данных будет не затронута, за исключением случаев, когда чат начинается и заканчивается).
Проблема . Пользователь не может начинать беседы с другим пользователем, если они не находятся в режиме онлайн. Как создать систему так, чтобы чат мог запускаться только в том случае, если оба пользователя находятся в сети?
Мне не нужен конкретный код, просто логика его работы.
Когда пользователь регистрируется на вашем сайте и остается отправлением ajax ping на каждые 5 секунд на сервер, а сервер будет обновлять время пинга. И поэтому вы можете перечислить своих онлайн-пользователей, смотрящих в это время, и если время ping больше 5 секунд, это означает, что ваш пользователь вышел из системы или закрыл свой браузер.
Кроме того, вы можете отключить статус с помощью одного и того же механизма, используя события фокуса браузера.
Предполагая, что вы регистрируете активность пользователя:
Разрешайте пользователям получать чат, если получатель показал активность за последние 30 секунд. Если нет, покажите сообщение об ошибке, что пользователь не подключен к сети и / или игнорирует отправленное сообщение.
С системой без гражданства единственный способ решить, кто есть и не находится в сети, – использовать таймаут. Вы упомянули использование AJAX и таймера, поэтому, если последняя активность пользователя старше, то последнее обновление AJAX (плюс время обновления), то они не включены. Вы должны убедиться, что страница инициирования чата запускает обновления активности.