Как обновить измененные данные пользователя при входе в несколько браузеров - PullRequest
0 голосов
/ 10 февраля 2019

Я храню пользовательские сеансы в коллекции mongo, используя промежуточное программное обеспечение для экспресс-сеансов.

Что является наилучшим способом обновления всех пользовательских сеансов при изменении одного из них.

Например, если пользователь меняет электронную почту из сеанса А, я обновляю его немедленно.Но изменения не применяются к остальным.

Для ясности: Браузер 1 - Пользователь изменил адрес электронной почты Браузер 2 - Перезагрузить страницу, получая старые данные

app.get('/change-email', async (req, res, next) => {
  const userData = await User.findOneAndUpdate({ _id: req.session.user.id }, {
    $set: {
      email: req.body.email,
    },
  }, {
    new: true,
  });
  req.session.user = {
    id: userData._id,
    email: userData.email,
    username: userData.username,
    name: userData.name,
  };
});

Я ожидаю, что изменение выполнено ссеанс А, будет распространяться среди остальных сеансов пользователей.

В качестве одного из решений проблемы, я думаю, искать все сеансы пользователей и обновлять их по всем данным пользователя (электронная почта, имя пользователя, имяи т. д.) изменить.

1 Ответ

0 голосов
/ 10 февраля 2019

Вы можете использовать EventSource() на клиенте для потоковой передачи данных в браузер с сервера.

На сервере отправьте одно или несколько сообщений клиентам, имеющим MIME тип "text/event-stream".Например, см. Как прочитать и отобразить размер загружаемого файла, записываемого на сервер, в режиме реального времени без блокировки как на сервере, так и на клиенте? .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...