Search code examples
javascriptnode.jseventemitter

Event emitter shared between modules


I use event emitter and it seems that I need it in several module, I mean I want to use the same instance my question is weather its better to create one module which expose the event emitter instance and how its recommended to do it?

What I did is like following which I share between modules but not sure if its recommended ...please let me know

var events = require('events');
var eventEmitter = new events.EventEmitter();

module.exports = {
    getEventEmitter: function () {
        return eventEmitter;
    }
};

Solution

  • The code you have is fine.

    It could be simplified like this, if you want:

    
    var events = require('events');
    var eventEmitter = new events.EventEmitter();
    
    module.exports = eventEmitter;
    

    Note that while this generally works fine (I do this a lot), it is possible to break the require module cache and end up with a different instance.