Как добавить прослушиватель событий в один файл для эмиттера в другой файл с помощью nodejs?
Я новичок в этом javascript, так что я уверен, что это простой вопрос.
Структура файла выглядит следующим образом:
/app.js
/app/controller/users.controller.js
/app/routes/socketio.js
Я хотел бы иметь функцию emit, которая запускается при вызове определенного контроллера в users.js, и прослушиватель в файле socketio.js, который его забирает. Цель этого заключается в том, чтобы при вызове контроллером функции, которая обновляет базу данных, я хотел, чтобы она отправляла результаты в socketio, которое уже подключено к информационной панели.
Я знаю, как создать событие emit / listener, когда они находятся в одном файле, но я не знаю, как заставить их общаться между файлами / каталогами.
Заранее спасибо!
ОБНОВЛЕНИЕ: Вот как выглядит код (я упростил его, чтобы избавиться от ненужной информации):
// /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
});
}