Отправляйте запрос на удаление только при закрытии окна, а не при обновлении страницы. - PullRequest
0 голосов
/ 09 февраля 2019

Я работаю над приложением чата, используя 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, но это не работает.Спасибо за любую помощь.

...