gpt4 book ai didi

当向没有响应的服务器发出 http.request 时出现 node.js 错误

转载 作者:太空宇宙 更新时间:2023-11-03 22:55:41 25 4
gpt4 key购买 nike

我正在编写一个node.js服务器,它充当客户端和java服务器之间的API,该服务器是node.js API的下游一步。该 API 接受来自客户端的传入 HTML 请求,重新格式化它们,并将它们发送到 java 服务器,java 服务器将其答案返回给 node.js API,node.js API 将其返回给客户端。除了服务器宕机的情况外,这一切都运行得很好。我需要捕获该事件,就像我可以捕获 502 或 302 一样...这是我的代码:

async.waterfall(
[
function(callback){
var options = { host: 'localhost', port: '8080',
path: '/javaServerWork/' + req.query.foo + '?toDo=' + req.query.bar,
method: 'GET',
headers: { accept: 'application/json' }
};

http.request(options, function(response){
response.on('error', function(exception) { Console.log("error here"); }
if(response.statusCode == '200'){ callback(null, response); }
else if (response.statusCode == '502') { res.send('502'); }
else { res.send('not 200 and not 502'); }
}).end();
},

function(response){
var javaResponse = '';
response.on('error', function(exception){ Console.log("error here");});
response.on('data', function (chunk){ javaResponse += chunk; });
response.on('end', function(){
res.send(javaResponse);
})
}
]
);

当我启动此 Node 服务器并向 node.js 服务器发出请求,然后尝试访问 java 服务器时,node.js 崩溃,并且我在控制台中收到以下错误:

events.js:69 throw arguments[1]; // Unhandled 'error' event ^ Error: connect ECONNREFUSED at errnoException (net.js:846:11) at Object.afterConnect [as oncomplete] (net.js:837:19)

我需要做的就是在java服务器关闭时捕获“无响应”,这样我就可以执行另一个函数或简单地将该事实返回给客户端,当然,不会导致 Node 崩溃!这可能很简单,但我没有发现任何有效的方法。我尝试过 process.on('uncaughtException'),我尝试过(如代码中所示)response.on('error')。

我是 Node 新手,看不出问题出在哪里......非常感谢任何帮助!

最佳答案

你尝试过吗

http.request(options, function(response){
response.on('error', function(exception) { Console.log("error here"); }
if(response.statusCode == '200'){ callback(null, response); }
else if (response.statusCode == '502') { res.send('502'); }
else { res.send('not 200 and not 502'); }
}).on('error', function(e) {
console.log("handle error here");
}).end();

听起来错误是在 http.request 返回的请求对象上抛出的,而不是在响应对象上抛出的

( http://nodejs.org/api/http.html#http_http_request_options_callback )

关于当向没有响应的服务器发出 http.request 时出现 node.js 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15177238/

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