Событие EventEmitter не получено - PullRequest
0 голосов
/ 22 апреля 2019

у меня 3 файла

a.js общий модуль EventEmitter

const EventEmitter = require('events');

const myEmitter = new EventEmitter();

module.exports = myEmitter;

b.js издателя

const myEmitter = require('./a');

// Perform the registration steps

let user = 1;

setInterval(() => {
    myEmitter.emit('user-registered', user);    
    user++;
}, 1000);

// Pass the new user object as the message passed through by this event.

c.js абонент

const myEmitter = require('./a');

myEmitter.on('user-registered', (user) => {
  // Send an email or whatever.
  console.log(user);

});

Когда я запускаю b.js или издателя, события публикуются непрерывно, но когда я запускаю c.js в отдельном окне, он сразу же прекращает выполнение, как мне заставить эту работу работать с подписчиком, фактически слушающим издателя?

1 Ответ

1 голос
/ 22 апреля 2019

Проблема в том, что вы пытаетесь опубликовать события в одном процессе и прослушивать их в отдельном процессе.Базовый API событий не предназначен для такого рода межпроцессного взаимодействия.

Лучше всего настроить ваш пример на работу, изменив a.js на:

const EventEmitter = require('events');
const publisher = require('./b');
const subscriber = require('./c');

const myEmitter = new EventEmitter();

module.exports = myEmitter;

А затем запустите a.js в одиночку.Это запустит издателя и подписчика в одном процессе.

...