在我的nodejs服务器中,我连接了socket.io和mongodb,前面的是rectjs。我已经连接了socket.io并发出或监听更改,但我想要监听数据库上添加的每一个新用户,然后发出所有有关这些发生的情况。我已经制作了用户登录的API,我想无论何时新用户登录到那个控制器中,socket.io都应该监听,然后发出有关该用户的信息。
我连接了app.js中的socket.io和usercontroller.js中的监听逻辑
下面是我在app.js中的套接字连接。
io.on("connection", socket => {
console.log(`connected ${socket.id}`);
//creating user as soon as new client connected
//sending all user but not working
User.find()
.then(result => {
socket.emit("Users", result);
})
.catch(err => console.error(err));
//sending the same id which connected now
socket.emit("YOUR_ID", socket.id);
socket.on("disconnection", () => {
console.log(`disconnected ${socket.id}`);
});
});
这是我的UserController.js。
exports.signin = (req, res) => {
User.findOne({
email: req.body.email
})
.then(user => {
console.log(user);
if (!user) {
console.log('no user');
return res.json({
msg: 'no user'
})
} else {
//here i want to listen
return res.json({
msg: 'User exists'
});
}
})
}
我只想监听新的用户签名,然后发出,但问题是我不能做那个逻辑。
如果我需要添加socket.io作为express中间件或其他任何东西,也没问题。
谢谢你的帮助。
const socketConnection=io.on("connection", socket => {
console.log(`connected ${socket.id}`);
//creating user as soon as new client connected
//sending all user but not working
User.find()
.then(result => {
socket.emit("Users", result);
})
.catch(err => console.error(err));
//sending the same id which connected now
socket.emit("YOUR_ID", socket.id);
socket.on("disconnection", () => {
console.log(`disconnected ${socket.id}`);
});
});
然后用express设置变量
express.set('socketConnection',socketConnection);
得到它并利用它
常量connection=app.get('socket connection')