![](/img/trans.png)
[英]How do I prevent people from overloading a socket node.js server from inspector?
[英]Node.js application quits if other server is unreachable. How do I prevent my application from stopping?
我正在编写一个应用程序,该应用程序定期与远程服务器签入,以签入新版本的软件。 这是我第一次尝试使用node.js,请耐心等待。 当服务器启动并运行时,程序运行完全正常。
但是,当服务器未运行时,程序会退出并显示错误消息:
events.js:72
throw er; // Unhandled 'error' event
^
Error: connect ECONNREFUSED
at errnoException (net.js:904:11)
at Object.afterConnect [as oncomplete] (net.js:895:19)
通过阅读,我相信我已经通过在回调中包含response.on('error',...)部分来设置代码以正确处理错误。 但是,从错误中可以看到,它没有给我尝试设置的错误console.logs。 这是我的代码中不起作用的部分,如果需要的话,我可以包括其他部分,这只是一个非常大的应用程序:
var index = require ("./index");
var http = require ('http');
var fs = require ("fs");
var apps = [{
"name":"IDSocket",
"localVersion": "",
"hostVersion": "",
"downloadURL": ""
},
{
"name": "X-Wing vs. Tie Fighter",
"localVersion": "4.2.1",
"hostVersion": "",
"downloadURL": ""
}]
//checks host server for host version, stores as json object
function checkHost(hostinfo){
callback1 = function(response) {
var str = '';
var hostObject;
response.on('data', function (chunk) {
str += chunk;
});
response.on('error', function(err) {
console.log('problem with request: ' + err.message);
hostObject = "why, error? " + err.message
});
response.on('end', function () {
hostObject = str;
hostObject = JSON.parse(hostObject);
apps[0]["hostVersion"] = hostObject[0]["version"];
apps[0]["downloadURL"] = hostObject[0]["downloadURL"];
apps[1]["hostVersion"] = hostObject[1]["version"]
apps[1]["downloadURL"] = hostObject[1]["downloadURL"]
console.log(apps[0]["hostVersion"] + ": recieved IDSocket host version");
index.everyFourHours();
});
}
http.request(hostinfo, callback1).end();
};
预先感谢您对我的理解,这对我有什么帮助!
编辑:到目前为止我尝试过的事情:
尝试在http.request行以及整个回调函数上使用带有console.log错误的catch块的块
process.on( 'uncaughtException'
domain.create和domain.run
您应该在http.request
实例中添加错误处理程序。
例如,您可以将http.request
调用更改为:
var req = http.request(hostinfo, callback1);
req.on('error', function(err) { console.log("ERROR: " + err.message); });
req.end();
在这里阅读更多信息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.