2013-06-18 15 views
12

Powiedzmy mam 3 odsłonięte funkcje: Użytkownik, postów, artykułówNodejs: użyj eventEmitter obiekt globalnie

z których każdy musi emitować komunikaty w pliku o nazwie mediatora gdzie ustawione są wszystkie zdarzenia.

Obecnie jestem mieć problemy robi tak

W pliku mediatora mam coś tak:

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

exports.pubsub = new EventEmitter() 

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

i funkcji użytkownika, pocztowych oraz art. Coś takiego:

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); 
}; 

Emitowany jest całkowicie ignorowany, nie ma błędu ani nic. Nie jestem pewien, czy robię to dobrze, więc każdy kierunek byłby doceniany. Żądany zwrot to praca zgodnie z oczekiwaniami.

Odpowiedz

20

Tworzysz EventEmitter dwukrotnie, więc wyeksportowany nie jest tym, który subskrybuje to wydarzenie. To działa:

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

exports.pubsub = pubsub; 

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

Nie jestem pewien, jak tego nie widziałem. Prawdopodobnie z frustracji :). Dzięki! –

Powiązane problemy