Как добавить прослушиватель событий в один файл для эмиттера в другой файл с помощью 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

    });

}

0 ответов

Другие вопросы по тегам