По принцип тези неща работят по следния начин.
Всеки път, когато потребител предприеме действия (опресняване на чата, изпратено съобщение, посетена страница и т.н.), токен, свързан с потребителя (токен, който е записан във вашия сървър, DB например) се актуализира с текущия час.
<предварителен код>| Потребителско име | Последно действие |---------------------------------| 14 (маркировка) | 2012-02-09-10:34:53 || 56 (фил) | 2012-02-09-09:12:34 || 9 (Джон) | 2012-02-09-10:33:11 |И тогава решавате, че даден потребител е онлайн ако токенът му не е твърде стар (5/10 минути?)
Можете да подобрите този метод, ако използвате AJAX, за да изпращате периодична заявка до сървъра на всеки около 1 минута. Тази AJAX заявка актуализира стойността на токена. Така че по този начин можете да разберете, че потребителят е онлайн и ако не прави нищо, освен да се взира в страницата. И когато той напусне (затваряне на браузъра или раздела), спирането на периодичното повикване на AJAX работи, така че след 5/10 минути потребителят се обявява за офлайн .
Успех!