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

时间:2015-04-15 13:53:39

标签: javascript node.js socket.io

我是这个javascript的新手,所以我确定这是一个简单的问题。

文件结构如下所示:

/app.js
/app/controller/users.controller.js
/app/routes/socketio.js

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

我知道如何在同一个文件中创建一个发出/侦听器事件,但我不知道如何让它们在文件/目录之间进行通信。

提前致谢!


更新: 这是代码的样子(我简化了一堆以消除不必要的信息):

// /app.js

var express = require('express');
var path = require('path');

var routes = require('./routes/index');

var app = express();

app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');
app.use(express.static(path.join(__dirname, 'public')));

app.use('/', routes);

var debug = require('debug')('nodemit:server');
var http = require('http');

var server = http.createServer(app);

var io = require('socket.io').listen(server);
var socket = require('./routes/socketio')(io);

var port = 3000;

server.listen(port, function(){
  console.log('Server is listening on port: ' + port);
});

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

    });

}

0 个答案:

没有答案