подсчет онлайн количества пользователей веб-приложения - PullRequest
1 голос
/ 18 июля 2010

Я использую ASP.Net + .Net 3.5 + VS2008 + IIS 7.0 + C # для разработки веб-приложения. Я хочу посчитать, сколько пользователей в сети. Это моя текущая реализация,

  1. когда вызывается Session_Start, я увеличу количество пользователей в сети на 1;
  2. когда вызывается Session_End, я уменьшу количество пользователей в сети на 1.

Два вопроса,

A Это правильная реализация?

B. Другой вопрос, я думаю, что этот метод не может отслеживать количество пользователей в реальном времени, так как, когда пользователь закрывает браузер, Session_End не будет вызван немедленно (Session_End будет отложен для вызова) Правильно?

Ответы [ 3 ]

2 голосов
/ 18 июля 2010

Используете ли вы членство ASP.NET?

Membership.GetNumberOfUsersOnline()

Вы можете настроить время, в течение которого пользователь считается «онлайн», в web.config - например,

<membership defaultProvider="..." 
            userIsOnlineTimeWindow="10" 
  <providers>
    ....
  </providers>
</membership>

Подробнее здесь

1 голос
/ 18 июля 2010

Ваша реализация не будет очень точной - если пользователь войдет в систему с помощью двух браузеров, ваш счетчик увеличится на два.

Многие сайты просто регистрируют входы в систему, а затем подсчитывают количество уникальных входов в систему за последние x минут, чтобы получить общее количество онлайн.

1 голос
/ 18 июля 2010

Другая проблема с использованием Session_End заключается в том, что он не срабатывает надежно, фактически, если вы используете что-либо, кроме состояния сеанса inproc, вы не можете полностью на это полагаться.

Лучшим вариантом является использование поставщика членства, посмотрите Membership.GetNumberOfUsersOnline ()

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