Şöyle bir yapı hazırlanabilir.

Sisteme her giriş yapan üyeye bir ID numarasını atarsınız. Bu numarayı istediğiniz yerde tutun. (Redis, Mongo etc.) Client JS kısmında Auth_ID değişkeninde bu değer olsun. Farz edelim ki redis kullanıyoruz. Redis'te tanımlanan ID numarasının olup olmadığını kontrol edin. Eğer yoksa Redis'e yazın. Üye artık "Online Users"'ta, "disconnect" eventına hiçbir şey yazmayın. PHP tarafında üye sistemden çıkış yaptığında Redis'ten tanımladığınız Auth_ID'yi silin. Buraya kadar her şey tamam fakat şöyle bir sorunumuz var. Eğer kullanıcı çıkış yapmaz direk sayfayı kapatırsa ne olacak? Çözümü çok basit arkaplanda Redis'e ikinci bir değer tanımlayın bu üyenin girişi yaptığı zaman olsun. Her sayfa gezişinde aralıklarla bu zamanı güncelleyin. Üye sayfayı kapattığında farz edelim zaman aşımı 30 saniye olsun. Konsol tarafında 2 tane ekran çalışacağı için (1.si socket server, 2. user disconnect controller) 2. Nodemizde sürekli sorguyla zamanları kontrol edelim. Zaman aşımına girenleri Redis'ten silelim. Bu yazdığım sistem pek stabil çalışmayabilir fakat mantığı anlatmak için yazdım.

Sormak istediğiniz sorular olursa hiç çekinmeden sorabilirsiniz.