Как бы вы реализовали функцию «кто онлайн»? - PullRequest
2 голосов
/ 24 февраля 2010

Я хотел реализовать функцию «кто онлайн» на моем сайте.

Интересно, как бы вы решили, если пользователь онлайн или нет?

Некоторые опции:

  1. Последнее посещение, менее N минут назад (что такое N?)
  2. Кометный сервер с длительным опросом
  3. Что-то еще

Ответы [ 3 ]

1 голос
/ 24 февраля 2010

Я бы выбрал вариант 1 и позволил бы установить N из файла конфигурации. Предположительно, активность пользователя регистрируется с отметкой времени в каком-либо хранилище данных, поэтому вычисление того, считается ли пользователь онлайн (замечен меньше, чем N раз назад), должно быть довольно простым. Вы можете рассмотреть возможность использования периодического запроса AJAX для регулярного обновления онлайн-коллекции пользователей.

1 голос
/ 24 февраля 2010

Вы также можете использовать метод пинга. Отправляйте легкий запрос AJAX с клиента на сервер примерно каждые 30-60 секунд. Сохраняйте запрос и ответ как можно меньше для уменьшения пропускной способности, и это должно работать почти так же, как метод Comet.

0 голосов
/ 24 февраля 2010

Если вы используете переменные сеанса, то пользователь в сети, если last_activity + session_expiry> current_date. В противном случае сеанс уже истек и он не подключен к сети.

Теперь все зависит от того, что люди смогут делать с этой функцией «кто онлайн». Вы можете предпочесть более консервативную меру, чтобы повысить достоверность активности пользователя.

Но, учитывая природу сети, не существует надежного способа обеспечить пользователя действительно активным и активным на вашем сайте, если не требовать время от времени взаимодействия с пользователем, но это будет раздражать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...