Простите глупый вопрос, если это так, я относительно новичок в узле.Выход дочернего процесса в socket.io
Я создаю дочерний процесс на моем сервере узлов, чтобы импортировать набор данных в базу данных. Детский процесс, выполняющий osm2pgsl
с параметрами, имеет свой собственный внутренний вывод, который отображает текущие обработанные данные и счетчик того, что было обработано.
У меня есть простой сценарий узла, который запускает этот процесс и регистрирует информацию из этого процесса по мере поступления. Основная информация, к которой мне нужен доступ, не опрошена через stdout, stderr or on
, что является проблематичным.
Узел сценария
var util = require('util'),
spawn = require('child_process').spawn,
file = process.argv[2],
ls = spawn('osm2pgsql', ['--slim', '-d', 'gis', '-U', 'postgres', '--number-processes', '3', file]);
ls.stdout.on('data', function (data) {
process.stdout.write('Currently processing: ' + data.toString() + '\r');
});
ls.stderr.on('data', function (data) {
console.log('stderr: ' + data.toString());
});
ls.on('exit', function (code) {
console.log('child process exited with code ' + code.toString());
});
Выход
Mid: pgsql, scale=100 cache=800
Setting up table: planet_osm_nodes
stderr: NOTICE: table "planet_osm_nodes" does not exist, skipping
stderr: Setting up table: planet_osm_ways
stderr: NOTICE: table "planet_osm_ways" does not exist, skipping
stderr: Setting up table: planet_osm_rels
stderr: NOTICE: table "planet_osm_rels" does not exist, skipping
stderr:
Reading in file: /OSMDATA/great-britain-latest.osm.pbf
Processing: Node(10k 10.0k/s) Way(0k 0.00k/s) Relation(0 0.00/s)
Processing: Node(20k 20.0k/s) Way(0k 0.00k/s) Relation(0 0.00/s)
Processing: Node(30k 30.0k/s) Way(0k 0.00k/s) Relation(0 0.00/s)
От stderr:
линии, вы можете увидеть, что я могу получить доступ к этому течению, но Processing: ...
, что мне нужно доступ к превыше всего. Это печатает из дочернего процесса, и я не уверен, как обращаться к нему напрямую.
Есть ли способ доступа к выходу (выше) из моего сервера Nodejs?
EDIT: Я собираюсь подключить этот вывод к Socket.io, но сначала мне нужен доступ к нему, следовательно, название.