привет. есть такая проблема: у меня в компоненте чата при размонтировании происходит следующее:
return () => {
// отправляю событие, что пользователь покинул комнату
socket.emit('user:leave', userId);
// выполняю отключение сокета
socket.disconnect();
};
это нормально работает, когда я закрываю вкладку, меняю адрес и тд, но когда я закрываю браузер, то срабатывает только дисконнект, а первое событие не отрабатывает.
я дописал еще
window.onbeforeunload = function() {
socket.emit('user:leave', userId);
};
теперь при закрытии браузера все работает вроде бы корректно, но можно ли как-то избежать этого дублирования и сделать это более изящно и правильно?