Я работаю над приложением чата, используя socket.io/ReactJS
.Я столкнулся с проблемой, при которой мне нужно удалить конкретного пользователя (строковое значение - просто имя пользователя) из серверной части (NodeJS/ExpressJS
) при закрытии окна браузера, а не при обновлении страницы.Поскольку я использую redux-persist
(хранилище сеансов), я хочу сохранить состояние пользователя при обновлении окна, но когда пользователь закрывает окно браузера, пользователь будет удален из серверной части и, очевидно, из хранилища сеансов.
В моем файле App.js ниже приведен код для регистрации на событие:
removeUserBeforeUnload = () => {
if (window.performance.navigation.type !== 1)
// The socket request which removes the username from the backend
socket.emit("removeUser", this.props.currentUser);
};
setupBeforeUnloadListener = () => {
window.addEventListener("beforeunload", ev => {
ev.preventDefault();
return this.removeUserBeforeUnload();
});
};
componentDidMount() {
// Registering event
this.setupBeforeUnloadListener();
}
Я пытался использовать window.performance.navigation.type, но это не работает.Спасибо за любую помощь.