Fondamentalement, ces choses fonctionnent comme suit.
Chaque fois que l'utilisateur effectue des actions (actualisation du chat, message envoyé, page visitée, etc.), un jeton associé à l'utilisateur (jeton enregistré sur votre serveur, DB par exemple) est mis à jour avec l'heure actuelle.
| User ID | Last action |
-------------------------------------
| 14 (mark) | 2012-02-09-10:34:53 |
| 56 (phil) | 2012-02-09-09:12:34 |
| 9 (john) | 2012-02-09-10:33:11 |
Et puis vous décidez qu'un utilisateur est en ligne si son jeton n'est pas trop ancien (5/10 minutes ?)
Vous pouvez améliorer cette méthode si vous utilisez AJAX pour envoyer une requête périodique au serveur toutes les 1 minute environ. Cette requête AJAX met à jour la valeur du jeton. Ainsi, de cette façon, vous pouvez également dire à l'utilisateur qu'il est en ligne s'il ne fait que regarder la page. Et lorsqu'il quitte (fermer le navigateur ou l'onglet), l'appel périodique AJAX s'arrête de fonctionner, donc au bout de 5/10 minutes l'utilisateur est déclaré hors ligne .
Bonne chance !