можно получить доступ к свойствам объектов с []
вместо .
, Это позволяет Вам, ищут свойство, соответствующее переменной.
obj = {a:"test"};
var propname = "a";
var b = obj[propname]; // "test"
можно также использовать это для получения/устанавливания свойств объектов, имя которых не является легальным идентификатором.
obj["class"] = "test"; // class is a reserved word; obj.class would be illegal.
obj["two words"] = "test2"; // using dot operator not possible with the space.
Некоторые люди не знают это и заканчивают тем, что использовали оценка () как это, которое является действительно плохая идея :
var propname = "a";
var a = eval("obj." + propname);
Это более трудно считать, тяжелее для нахождения ошибок в (не может использовать jslint), медленнее для выполнения, и может привести к использованию XSS.
Best way is like you do, but time it out via activity. If a given session doesn't access a page within 5 minutes or so, you may consider them no longer active.
If you're using ASP.Net membership, take a look at GetNumberOfUsersOnline.
Для каждого действия пользователя, которое вы можете записать, вы должны рассматривать его "онлайн" для определенного окна. времени. В зависимости от сайта вы можете установить это значение до 5 минут. Фактический веб-запрос должен занять менее секунды. Вы должны сделать некоторое предположение о том, как долго они могут оставаться на этой странице и ничего не делать, кроме как считаться онлайн.
Этот подход требует, чтобы вы отслеживали время последней активности каждого пользователя.
Использовать Счетчики производительности :
- Активные сеансы сервера состояний : number of active user sessions.
Расширить сказанное шелковистым в своем ответ - поскольку на самом деле http не имеет состояния, чтобы определить, находится ли пользователь в настоящее время «в сети», вы действительно можете только отслеживать, сколько времени прошло с момента последнего обращения пользователя к вашему сайту, и определить, сколько времени между запросами, по вашему мнению, все еще активным.
Поскольку вы заявили, что это не основано на входе пользователей в систему, это может быть просто показателем того, с скольких различных IP-адресов вы получили запросы за последние 5 минут (или как долго вы считаете тайм-аут «онлайн»).
Не используйте для этого сеансы, если вам также не нужны сеансы для чего-то еще; в противном случае это будет излишним.
Предполагая, что установка с одним сервером, сделайте что-то вроде этого:
Если вы действительно используете сеансы, вы можете использовать идентификатор сеанса в качестве уникального идентификатора. Однако имейте в виду, что идентификаторы сеанса не выдаются до тех пор, пока вы не сохраните что-то в словаре сеанса, если только у вас не настроено событие Session_Start ().
В сценарии с балансировкой нагрузки или в сценарии веб-сада все становится немного сложнее, но вы можете использовать ту же основную идею, просто сохраняя информацию в базе данных, а не в памяти.
вы можете использовать идентификатор сеанса в качестве уникального идентификатора. Однако имейте в виду, что идентификаторы сеанса не выдаются до тех пор, пока вы не сохраните что-то в словаре сеанса, если только у вас не настроено событие Session_Start ().В сценарии с балансировкой нагрузки или в сценарии веб-сада все становится немного сложнее, но вы можете использовать ту же основную идею, просто сохраняя информацию в базе данных, а не в памяти.
вы можете использовать идентификатор сеанса в качестве уникального идентификатора. Однако имейте в виду, что идентификаторы сеанса не выдаются до тех пор, пока вы не сохраните что-то в словаре сеанса, если только у вас не настроено событие Session_Start ().В сценарии с балансировкой нагрузки или в сценарии веб-сада это становится немного сложнее, но вы можете использовать ту же основную идею, просто сохраняя информацию в базе данных, а не в памяти.