Как фиксировать уход пользователя с сайта?
onbeforeunload - но надо найти фиксы на FF, там асинхронность и всё такое, запросы обрываются не дойдя до сервера.
А более простой иногда - websocket сервер.
Пустой websocket в котором висит on disconnect событие.
Т.е. когда человек отключился - ушел с сайта - занесли куда-надо в базу.
Как делал я в php only проектах. 
Я делал глобальный middleware который обновлял онлайн пользователя при каждом запросе. (Редис + ID с бд).
Потом когда кто то заходил на профиль человека то просто проверял онлайн ли он (если прошло больше 5 минут с последнего действия то говорил что он off и писал в редис off и потом уже не сверял время).