Javascript 如何使用nodejs在一个文件中为不同文件中的发射器添加事件侦听器?

Javascript 如何使用nodejs在一个文件中为不同文件中的发射器添加事件侦听器?,javascript,node.js,socket.io,Javascript,Node.js,Socket.io,我不熟悉javascript,所以我相信这是一个简单的问题 文件结构如下所示: /app.js /app/controller/users.controller.js /app/routes/socketio.js 我希望有一个emit函数,在users.js中调用特定的控制器时触发,并在socketio.js文件中有一个侦听器接收它。这样做的目的是,当控制器调用更新数据库的函数时,我希望它将结果推送到已经连接到仪表板的socketio 我知道当它们在同一个文件中时如何创建emit/liste

我不熟悉javascript,所以我相信这是一个简单的问题

文件结构如下所示:

/app.js
/app/controller/users.controller.js
/app/routes/socketio.js
我希望有一个emit函数,在users.js中调用特定的控制器时触发,并在socketio.js文件中有一个侦听器接收它。这样做的目的是,当控制器调用更新数据库的函数时,我希望它将结果推送到已经连接到仪表板的socketio

我知道当它们在同一个文件中时如何创建emit/listener事件,但我不知道如何让它们在文件/目录之间进行对话

提前谢谢


更新: 下面是代码的样子(我将其简化了很多,以消除不必要的信息):

users.controller.js

// /app/controllers/users.controller.js

exports.getUsers = function(req, res){

    var user = req.params.user;

    // I would to be able to emit something from here....

    res.json(user);
}
socketio.js

// /app/routes/socketio.js

module.exports = function(io){

    io.sockets.on('connection', function(socket){

        //... and have an event listener here that picks up when it is hit

    });

}

你有没有试过将你的
io
socket
对象作为参数传递给
users.js
中的函数?就像我说的,我对这东西还不熟悉,所以我真的不知道这是什么意思。我确信这很容易,我只是不知道怎么做…我不确定我能在没有看到代码的情况下回答你的问题,但基本上:你想调用
socket.emit
,但你没有
socket
。解决方案是:只要你有
socket
,就把它从
users.js
文件传递到一个函数中。就在socketio主页上有一个小例子:@apsillers好的,让我试着提取出适用于这里的代码,并在一分钟内更新它
// /app/routes/socketio.js

module.exports = function(io){

    io.sockets.on('connection', function(socket){

        //... and have an event listener here that picks up when it is hit

    });

}