Я пытаюсь связаться с (разветвленным) дочерним процессом из в node.js.
На заднем плане я хочу запустить поток в другом потоке.
У меня естьродительский процесс nodejs, который запускает другой дочерний процесс nodejs.Дочерний процесс выполняет некоторую логику и затем возвращает вывод родительскому элементу.
Код родительского файла:
const stream = require('stream');
const Writable = stream.Writable;
const fork = require("child_process").fork;
class Logger extends Writable {
constructor() {
super({ objectMode: true });
}
_write(chunk, encoding, callBack) {
console.log(`${Date.now()} - (payload:${chunk})`);
callBack(null);
}
}
const writeStream = new Logger();
const computedStream = fork('child.js', [], { silent: true });
computedStream.stdout
.pipe(writeStream);
Код дочернего файла:
const stream = require('stream');
const Readable = stream.Readable;
class RandomNumberGenerator extends Readable {
constructor() {
super({ objectMode: true });
this._count = 10;
this._counter = 0;
}
_read() {
if (this._counter === this._count) {
return this.push(null);
}
const random = Math.random();
this.push(random)
this._counter++;
}
}
const readStream = new RandomNumberGenerator();
readStream.pipe(process.stdout);
Вышеприведенный код печатаетничего и я жду чего-то.как это
1546139560637 - (payload:0.05907150771370184)
1546139560642 - (payload:0.395942443503438)
1546139560642 - (payload:0.7873116185362699)
...