I grund och botten fungerar dessa saker som följande.
Varje gång en användare vidtar åtgärder (chattuppdatering, meddelande skickat, besökt sida, etc) uppdateras en token som är kopplad till användaren (token som sparas på din server, t.ex. DB) med aktuell tid.
| 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 |
Och sedan bestämmer du att en användare är online om hans token inte är för gammal (5/10 minuter?)
Du kan förbättra den här metoden om du använder AJAX för att skicka en periodisk begäran till servern var 1:e minut eller så. Denna AJAX-begäran uppdaterar tokenvärdet. Så på detta sätt kan du se att användaren är online också om han inte gör annat än att stirra på sidan. Och när han avslutar (stäng webbläsare eller flik), slutar AJAX periodiska samtal att fungera, så efter 5/10 minuter förklaras användaren offline .
Lycka till!