Я использую Node.js для порождения кукловода в отдельном процессе.
Вот этот дочерний процесс (он записывает веб-сокет в стандартный поток вывода):
// path: cp/index.js
(async () => {
const browser = await puppeteer.launch();
const wsEndpoint = browser.wsEndpoint();
process.stdout.write(wsEndpoint);
})();
Внутри основной процесс, я подключаюсь к экземпляру кукловода с помощью веб-сокета. Вот так:
var cp = await spawn('node', ['./cp/index.js'], {
detached: true,
shell: true,
cwd: __dirname,
});
cp.stdout.on('data', async (ws) => {
let browser = await puppeteer.connect({ browserWSEndpoint: ws.toString() });
// Do some processing.
// Exit the child process.
});
Но, к сожалению, я не могу получить доступ к дочернему процессу в обратном вызове cp.on('data')
, чтобы выйти после обработки.
Как я могу получить доступ к веб-сокету из моего дочернего процесса, подключиться к основному процессу, выполнить некоторый асинхронный код и затем отключиться от дочернего процесса?