Socket.io и правильный disconnect

1,00
р.
Я столкнулся с ситуацией, когда мне нужно оставлять соединение открытым если юзер нажал F5 в браузере, disconnect должен срабатывать только если юзер например закрыл вкладку или браузер. Это нужно, например в том случае, если человек заходит на сайт, и при коннекте сокета я уведомляю всех кто в онлайне о том что такой-то юзер зашел на сайт. В стандартной ситуации, при каждом обновлении страницы будет срабатывать событие connection, и будет уведомлять каждый раз всех кто в онлайне.
Как решить такую задачу?
P.S. Как вариант можно рассмотреть этот пример.
Но, мне не очень нравится такой подход, хотя и можно ставить таймер на disconnect, а при коннекте проверять в массиве с авторизованными клиентами, есть ли с таким sessid, и если есть - то не делать действия те что в connection.
Но, я почему-то верю, что есть более интересные варианты решения задачи. Прошу местных гуру отписаться по этому поводу)

Ответ
Фронт каждые Х секунд шлёт на сервер пинг, что он онлайн. Онлайн проверяется на фронте (движение мышкой в окне и т.д.) Каждая открытая вкладка шлёт такой пинг. Если пинг ни от куда не приходил ХХ секунд - делаешь пользователя оффлайн. Как только пользователь сделает какое-либо действие на фронте, то придёт пинг на сервер и ты разошлёшь всем сообщения, что пользователь снова онлайн.