Nodejs: использовать объект eventEmitter глобально

Предположим, что у меня есть 3 открытых функции: пользователь, сообщения, статьи

все из которых должны передавать сообщения в файл с именем mediator, где установлены все события.

В настоящее время у меня проблемы с этим

В файле медиатора у меня есть что-то вроде этого:

var EventEmitter = require('events').EventEmitter;
  , pubsub = new EventEmitter();

exports.pubsub = new EventEmitter()

pubsub.on('loggedIn', function(msg) {
    console.log(msg);
});

и в функциях пользователя, почты и статьи. Что-то вроде этого:

var mediator = require('../config/mediator')
    , _ = require('underscore')

exports.account = function(req, res) {
  var returned = _.omit(req.user._doc, 'password' )

  mediator.pubsub.emit('loggedIn', 'A User logged in');

  res.send(returned);
};

Испускание полностью игнорируется, отсутствует ошибка или что-то еще. Не уверен, что я делаю это правильно, поэтому любое направление будет оценено по достоинству. Желаемый доход работает, как ожидалось.

Ответ 1

Вы создаете экземпляр EventEmitter дважды, поэтому экспортированный не тот, который подписывается на событие. Это работает:

var EventEmitter = require('events').EventEmitter
  , pubsub = new EventEmitter();

exports.pubsub = pubsub;

pubsub.on('loggedIn', function(msg) {
    console.log(msg);
});