Intereting Posts
Как реализовать текстовую коррекцию алгоритма для замены слов в тексте? Получить все скрипты с внешнего веб-сайта Формат даты / времени, используемый в заголовках HTTP Symfony Console – перезаписать параметры по умолчанию Как я могу конвертировать две или более тире в синглы и удалять все тире в начале и конце строки? Форма MailChimp API 2.0 и PHP Обнаружение браузера iPhone Создание корзины с несколькими элементами и кнопка PayPal в PHP Как удалить index.php из codeigniter в UBUNTU Сопоставьте первое слово, а затем удалите его из строки с помощью PHP Когда использовать модули в Zend Framework? Как шифровать / расшифровывать AES с помощью Libsodium-PHP Каков наилучший метод для запланированных задач в PHP? Сделайте таймер обратного отсчета кнопки, который будет отключен навсегда после 5 минут даже при обновлении страницы, он должен оставаться отключенным Поддержка PHP для Google App Engine?

1-1 Система чата с использованием PHP / MySQL

Проект : приложение, для которого требуется частный чат 1-1.
Текущая система: Текущая система входа в приложение использует систему cookie для того, чтобы пользователи оставались вошедшими в систему.

Я понимаю, как реализовать систему чата (я только что прочитал о кометах и ​​могу реализовать ее позже, но пока я планирую использовать базовый AJAX с использованием таймера); чат будет храниться в текстовом / XML-файле во время чата, и он будет заархивирован в базу данных после ее завершения. Имя файла будет сохранено в базе данных при запуске чата и после его получения будет сохранено в виде файла cookie (база данных будет не затронута, за исключением случаев, когда чат начинается и заканчивается).

Проблема . Пользователь не может начинать беседы с другим пользователем, если они не находятся в режиме онлайн. Как создать систему так, чтобы чат мог запускаться только в том случае, если оба пользователя находятся в сети?
Мне не нужен конкретный код, просто логика его работы.

Когда пользователь регистрируется на вашем сайте и остается отправлением ajax ping на каждые 5 секунд на сервер, а сервер будет обновлять время пинга. И поэтому вы можете перечислить своих онлайн-пользователей, смотрящих в это время, и если время ping больше 5 секунд, это означает, что ваш пользователь вышел из системы или закрыл свой браузер.

Кроме того, вы можете отключить статус с помощью одного и того же механизма, используя события фокуса браузера.

Предполагая, что вы регистрируете активность пользователя:

Разрешайте пользователям получать чат, если получатель показал активность за последние 30 секунд. Если нет, покажите сообщение об ошибке, что пользователь не подключен к сети и / или игнорирует отправленное сообщение.

С системой без гражданства единственный способ решить, кто есть и не находится в сети, – использовать таймаут. Вы упомянули использование AJAX и таймера, поэтому, если последняя активность пользователя старше, то последнее обновление AJAX (плюс время обновления), то они не включены. Вы должны убедиться, что страница инициирования чата запускает обновления активности.