我正在使用socket.io/ReactJS
开发聊天应用程序。我遇到一个问题,我需要从浏览器窗口关闭而不是页面刷新的后端(NodeJS/ExpressJS
)中删除一个特定的用户(字符串值-只是一个用户名)。当我使用redux-persist
(会话存储)时,我想在刷新窗口时保持用户状态,但是当用户关闭浏览器窗口时,该用户将从后端以及显然从会话存储中删除。 / p>
在我的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,但这似乎不起作用。 感谢您的帮助。