我使用 express-session 中间件将用户 session 存储在 mongo 集合中。
当其中一个用户 session 执行更改时,这是更新所有用户 session 的最佳方式。
例如,如果用户更改 session A 中的电子邮件,我会立即更新它。但更改不适用于其余部分。
为清楚起见: 浏览器 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,
};
});
我希望从 session A 执行的更改将分发到其余用户 session 。
作为该问题的解决方案之一,我认为搜索所有用户 session 并在每次用户数据(电子邮件、用户名、姓名等)更改时更新它们。
最佳答案
您可以在客户端使用 EventSource()
将数据从服务器流式传输到浏览器。
在服务器上向具有 MIME
类型 "text/event-stream"
的客户端发送一条或多条消息。例如,参见 How to read and echo file size of uploaded file being written at server in real time without blocking at both server and client? .
关于javascript - 在多个浏览器中登录时如何更新更改的用户数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54611851/