Задать вопрос

Как отслеживать выход из сети?

Пишу чат на js, php, mysql. Нужно сделать статусы в сети пользователь или нет. В БД добавил три поля: isOnline, lastOnline и browserWindowsCount.
browserWindowsCount хочу использовать потому что чат может открываться в нескольких окнах. И вот к количеству окон я добавляю 1 и ставлю isOnline на true, когда в целом пользователь заходит в чат. А вот как отследить выход из чата? Ну то есть закрытие окна. Это же как-то сделано в телеграме и WhatsApp и тоже можно открывать несколько окон, но при этом найти как это сделано я не могу
  • Вопрос задан
  • 844 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 2
Daemon23RUS
@Daemon23RUS
Is online В БД явно лишний
Browser count никакой тоже полезности не несет.
Перечисленные примеры используют другую технологию Socket.IO например.
Кстати очень хорошо подходит для чатов.
Ознакомитесь с технологией https://socket.io/ многие вопросы отпадут сами собой.

P.S. чтобы нахрапом понять онлайн пользователь или нет, отправляете запрос раз ну например в 10 секунд от клиента, пришел запрос - обновился last Online А дальше все просто, онлайн те у кого это значение от текущего отличается менее чем на 20 секунд.
Ответ написан
@alexalexes
Чтобы реализовать вашу идею, нужен стек, где сервер выступает в роли ведущего по части отправки http-запроса клиенту. Сервер PHP, обычно, выступает в роли ведомого - когда клиент соизволит сделать запрос, тогда сервер может проанализировать, жив ли клиент. В случае с WebSocket можно на стороне сервера понять, закрылось ли соединение, не дожидаясь внятного ответа от клиента.
Сервер PHP может в WebSocket, но реализации у него кривые. На эту роль идеально подходят NodeJS + WebSocket.
С PHP вы только можете отслеживать, когда последний раз клиент отправлял запрос - если больше условных 10 минут назад, то он скорее мертв, чем жив.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы