KMK
KMK

Reputation: 1499

Using Node.js EventEmitter without subclassing

Is it possible to use Node.js EventEmitter in two different files without subclassing the EventEmitter?

I have tried this:

File1.js

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

emitter.emit('eventFromFile1');

File2.js

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

emitter.on('eventFromFile1', function(){
    console.log('Received event'); // Never happens
});

This does not work. I guess that is because two instances of the event emitter exists and they are not connected.

Can I achieve similar behaviour without subclassing the EventEmitter?

(I am new to Node.js)

Upvotes: 2

Views: 536

Answers (1)

morsecoder
morsecoder

Reputation: 1649

No need to subclass, you just need to use the same event emitter. In your example you have two different event emitters.

Like this:

File1.js

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

emitter.on('my_event', function(){
    console.log('Received event'); // Never happens
});

File2.js

var emitter = require('./File1.js').emitter;
emitter.emit('my_event');

Upvotes: 1

Related Questions