Найти - Пользователи
Полная версия: как проверить присутствует ли пользователь на сайте ?
Начало » Django » как проверить присутствует ли пользователь на сайте ?
1 2
zili
как проверить присутствует ли пользователь на сайте ?
romankrv
Вообще это не возможно узнать в принципе только через какие то допущения.
slav0nic
http://hg.djangobb.org/djangobb/file/fb0e478ced35/djangobb/djangobb_forum/middleware.py#l9
regall
мы не ищем лёгкий путей, ага :]
fth
Как один из очевидных вариантов вставить в базовый шаблон джаваскрипт, который при загрузке страницы и далее предположим каждые 30 секунд будет отсылать сигнал на сервер. И мы соответственно будет каждый раз обновлять DateTimeField завязанный на юзера, и если текущее время отличается от связанного с юзером временем более чем на 30 секунд, это означает что пользователя нет на сайте.
Из плюсов:
-легко делается без всяких дополнительных приложений
-быстро настраивается изменением всего одной временной константы
-работает если юзер держит страницу открытой, но не обновляет её

Из минусов:
-избыточная нагрузка на сервер
-требует у юзера включенного джаваскрипта
regall
Согласен с romankrv, в данном случае он абсолютно прав, как бы хитро не реализовалась проверка, 100-й уверенности, что пользователь сейчас на сайте, не будет.

fth
Как один из очевидных вариантов вставить в базовый шаблон джаваскрипт, который при загрузке страницы и далее предположим каждые 30 секунд будет отсылать сигнал на сервер.
UseCase #1: Пользователь открыл страницу и пошел на 4 часа пивка попить…
В данном случае вы проверяете не активность пользователя, а то, открыта ли вкладка в браузере.

UseCase #2: У пользователя отвалился на 2 минуты интернет, или интернет нестабилен, он будет то появляться, то исчезать.

Думаю, в данном случае рулить будет не супер-сложная реализация с кучей проверок, а супер-простая с минимальными телодвижениями и минимальным созданием лишней нагрузки.
fth
regall
UseCase #1: Пользователь открыл страницу и пошел на 4 часа пивка попить…
В данном случае вы проверяете не активность пользователя, а то, открыта ли вкладка в браузере.
Ну как бы формально он на сайте, если я джаббер оставлю включённым и уйду на пару часов, то он всё-равно будет показывать что я в сети. (да, может отличаться в зависимости от клиента)
Да и в случае чего никто не мешает ограничить кол-во отправляемых сигналов с одной загруженной страницы.
regall
UseCase #2: У пользователя отвалился на 2 минуты интернет, или интернет нестабилен, он будет то появляться, то исчезать.
Опять же если рассматривать формально, то такая конструкция отрабатывает так как и надо, ибо при нестабильном инете, юзер как раз таки и будет то появляться, то исчезать с сайта. Да и если что можно легко подрегулировать изменив 30 секунд на эти 2 минуты.

Ясное дело, что точно сказать в данных условиях ничего нельзя. Да и тем более не утонченно для чего оно надо и как оно должно работать.
regall
fth
Ну как бы формально он на сайте, если я джаббер оставлю включённым и уйду на пару часов, то он всё-равно будет показывать что я в сети. (да, может отличаться в зависимости от клиента)
Не совсем уместный пример. С джаббером другая ситуация, там есть статусы, и если вы не будете производить действия (например, двигать мышкой, или стучать по клавиатуре), то статус утсановится соответствующий (преимущество толстого клиента), ну, либо вам будут наяривать, думая что вы там =).

fth
Опять же если рассматривать формально, то такая конструкция отрабатывает так как и надо, ибо при нестабильном инете, юзер как раз таки и будет то появляться, то исчезать с сайта.
Худо будет, если при “входе”/“выходе” пользователя выполняются некие действия, которые могут быть не такими уж простыми с точки зрения нагрузки.
Doberman26rus
Может я не в теме, но на всякий случай вот ссылка http://djangosnippets.org/snippets/947/
slav0nic
не для этих вещей умные люди СУБД писали…
чем мой пример в 3 строки плох?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB