Можно попробовать воспользоваться вот этим апи
https://developer.mozilla.org/ru/docs/Web/API/Navi... для того чтоб слать запрос при закрытии вкладки но это же при будет срабатывать и при перезагрузке страницы.
Но по опыту могу сказать что у вас немного неправильный подход. Ваше решение если и будет работать то только в "идеальных" случаях, но очень часто будет работать не так как вы ожидаете, например пропал интернет, выключился компьютер, в телефоне села батарейка, пользователь закрыл браузер выбросив его из недавних и т.д. в этих всех случаях пользователь у вас зависнет в статусе онлайн. Чтоб справится с этими проблемами шлите, например, каждые 10 секунд (интервал подберите экспериментальным путем или исходя из того какую нагрузку может держать ваш хостинг) запрос на ваш бек, таким образом будете подтверждать что пользователь онлайн, если в течении 25 секунд (желательно чтоб время было >2х чем интервал, чтоб исключить ситуации когда один из запросов не доехал из за кратковременных проблем в сети) не было запросов от клиента значит он офлайн.