gpt4 book ai didi

javascript - Node js从不同的进程获取和设置数据

转载 作者:IT老高 更新时间:2023-10-28 22:00:36 41 4
gpt4 key购买 nike

我有 Node 应用程序,它完成了生成(子进程)到应用程序,应用程序有主机和端口:

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);
});

一些应用程序将立即启动,而一些应用程序将需要一些时间 10 - 20 秒才能启动

现在我使用 Node http 代理来运行应用程序,问题是当用户想要在应用程序启动和运行之前运行应用程序时出现错误。知道如何解决这个问题吗?

proxy.on('error', function (err, req, res) {
res.end('Cannot run app');
});

顺便说一句,由于我们框架的限制,我无法在代理错误中发送响应 500。任何其他想法我如何跟踪应用程序可能有一些超时以查看它发送响应 200 的天气。

更新 - 我的逻辑示例

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');
});
}

最佳答案

您需要在代理上监听第一个响应并查看其状态代码以确定您的应用是否成功启动。这样做的方法如下:

proxy.on('proxyRes', function (proxyRes, req, res) {
// Your target app is definitely up and running now because it just sent a response;
// Use the status code now to determine whether the app started successfully or not
var status = res.statusCode;
});

希望这会有所帮助。

关于javascript - Node js从不同的进程获取和设置数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33416975/

41 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com