提问者:小点点

如何使用socket.io从控制器发出一些数据而不是建立连接的文件


在我的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中间件或其他任何东西,也没问题。

谢谢你的帮助。


共1个答案

匿名用户

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')