I Knoten-Anwendung haben, die (Child-Prozess) laichen getan und Anwendung, die Anwendung haben Host und Port:Knoten js get und set Daten aus verschiedenen Prozess
var exec = require('child_process').spawn;
var child = exec('start app');
console.log("Child Proc ID " + child.pid)
child.stdout.on('data', function(data) {
console.log('stdout: ' + data);
});
child.stderr.on('data', function(data) {
console.log('stdout: ' + data);
});
child.on('close', function(code) {
console.log('closing code: ' + code);
});
einige Anwendung wird sofort beginnen und einige Anwendung dauert einige Zeit 10 - 20 Sekunden, bis sie beginnen.
Jetzt benutze ich den Knoten http-Proxy, um die App zu starten, und das Problem ist, dass ich Fehler bekomme, wenn die Anwendung die App vor dem Start ausführen möchte. Irgendeine Idee, wie ich dieses Problem irgendwie lösen kann?
proxy.on('error', function (err, req, res) {
res.end('Cannot run app');
});
Btw, ich kann keine Antwort 500 in Proxy-Fehler aufgrund der Beschränkung unseres Frameworks senden. Jede andere Vorstellung davon, wie kann ich die Anwendung verfolgen vielleicht mit einer gewissen Timeout Wetter zu sehen, es Antwort 200.
UPDATE senden - Abgebildete meiner Logik
httpProxy = require('http-proxy');
var proxy = httpProxy.createProxyServer({});
http.createServer(function (req, res) {
console.log("App proxy new port is: " + 5000)
res.end("Request received on " + 5000);
}).listen(5000);
function proxyRequest(req, res) {
var hostname = req.headers.host.split(":")[0];
proxy.web(req, res, {
target: 'http://' + hostname + ':' + 5000
});
proxy.on('error', function (err, req, res) {
res.end('Cannot run app');
});
}
Sie erwähnen, dass Sie Rahmenbeschränkungen haben - können Sie ins Detail gehen? Es ist schwer zu wissen, welche Lösungen Ihnen zur Verfügung stehen, wenn wir nicht wissen, was wir können und was nicht.Haben Sie die Kontrolle über den oder die gerade entstehenden Kindprozesse? –
Was erwarten Sie, wenn eine Anfrage gesendet wurde und die App noch nicht verfügbar ist? – Koder