仅在关闭窗口而不发送页面刷新时发送“ removeUser”请求

时间:2019-02-09 07:18:46

标签: reactjs session redux socket.io redux-persist

我正在使用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,但这似乎不起作用。 感谢您的帮助。

0 个答案:

没有答案