Используя дочерние процессы узла, я запускаю дочерний веб-сервер и хочу убить этот процесс, когда никто не обращается к этому серверу. Я также использую прокси-сервер, чтобы к дочернему процессу можно было получить доступ по адресу 'www.website.com/proxy/'.
Итак, мой вопрос сводится к тому, как определить использование порта или активность процесса.
Я делаю это, чтобы разместить на веб-сайте несколько проектов. Если бы эту идею можно было реализовать по-другому, я тоже рад такой помощи :)
Ниже приведена базовая c установка этой проблемы:
Родительский процесс
const express = require('express');
const exec = require('child_process').exec;
const { createProxyMiddleware } = require('http-proxy-middleware');
const app = express();
// Run child web server & setup proxy
let child = exec( 'npm start', {cwd: './server1/'} );
app.use('/proxy/', createProxyMiddleware('/proxy/',{target:'http://localhost:4000', pathRewrite: {"^/proxy/": ""}, ws:true, changeOrigin: true}));
// Listen
const server = app.listen( 80, function(){
let host = server.address().address;
let port = server.address().port;
console.log( `Listening at ${host}:${port}` );
});
Дочерний процесс (index. js запускается из 'npm start')
const express = require('express');
const app = express();
app.get('*', (req, res) => {
res.send( `Welcome to website 1! Your are accessing this on "${req.originalUrl}"` );
});
const server = app.listen( 4000, function(){
let host = server.address().address;
let port = server.address().port;
console.log( `Listening at ${host}:${port}` );
});