Node.js 套接字挂起和节点崩溃

Node.js 套接字挂起和节点崩溃,node.js,sockets,http,mongodb,Node.js,Sockets,Http,Mongodb,我有一个节点应用程序,可以将数据发布到远程API并获取响应。它工作正常,但有时节点服务器崩溃并生成以下错误: events.js:71 throw arguments[1]; // Unhandled 'error' event ^ Error: socket hang up at createHangUpError (http.js:1264:15) at Socket.socketCloseListener (http.js:1315:23) at Socket.EventEmitter.

我有一个节点应用程序,可以将数据发布到远程API并获取响应。它工作正常,但有时节点服务器崩溃并生成以下错误:

 events.js:71
throw arguments[1]; // Unhandled 'error' event
^
Error: socket hang up
at createHangUpError (http.js:1264:15)
at Socket.socketCloseListener (http.js:1315:23)
at Socket.EventEmitter.emit (events.js:126:20)
at Socket._destroy.destroyed (net.js:358:10)
at process.startup.processNextTick.process._tickCallback (node.js:244:9)
我在谷歌上搜索了一下,发现这是由于超时的原因造成的,但我真的不知道如何克服这个问题。 以下是my server.js中所需的代码:

if(request.body.company=="CQ")
    {
        var postData={firstName:request.body.firstname,lastName:request.body.lastname,Email:request.body.email,DayPhoneNumber:request.body.daytimePhone,Address1:request.body.addressOne,city:request.body.city,state:request.body.State,postalCode:request.body.zip,AreaOfIntrest:request.body.areaOfInterest,VendorLocationId:"38404",Notes:request.body.Notes,GraduationYear:request.body.graduationYear,AffiliateLocationId:"12345",LocationId:"12345",CampaignId:"12345"};

        var options={hostname:'webservices.someapi.com', path:'/ILM/Default.ashx?'+qs.stringify(postData), method:'GET'};

        var req = http.request(options, function(res) {

        res.on('data', function (chunk) {

        edModel.find({$and:[{daytimePhone:request.body.daytimePhone},{company:"CQ"}]},function(err,count){
        if(count.length==0)
        {
                var sr='RESPONSE: ' + chunk;
                if(sr.indexOf('status="Error"')==-1)
                {
                    request.body.leadid=sr;
                    var sr=sr.slice(sr.indexOf("leadid"));
                    sr=sr.slice(0,sr.indexOf(">"));

                    edDoc=new edModel(request.body);
                    edDoc.save();       
                    response.send({response:sr});
                }
                else
                {
                    response.send({response:sr});
                }
        }
        else
        {
            response.send({response:"<span style='color:red'>Duplicate Lead.<br> A lead with this number already exists in our database</span>"});
        }

    });


        });

        });

        // write data to request body
        req.write('data\n');
        req.end();
    }
if(request.body.company==“CQ”)
{
var postData={firstName:request.body.firstName,lastName:request.body.Email,DayPhoneNumber:request.body.daytimePhone,Address1:request.body.addressOne,city:request.body.state,postalCode:request.body.zip,AreaOfInvest:request.body.areaOfInterest,VendorLocationId:“38404”,注释:request.body.Notes,毕业年份:request.body.GraduationYear,附件位置ID:“12345”,位置ID:“12345”,活动ID:“12345”};
var options={hostname:'webservices.someapi.com',路径:'/ILM/Default.ashx?'+qs.stringify(postData),方法:'GET'};
var req=http.request(选项、函数(res){
res.on('data',函数(块){
查找({$and:[{daytimePhone:request.body.daytimePhone},{company:CQ}]},函数(err,count){
if(count.length==0)
{
var sr='RESPONSE:'+chunk;
如果(sr.indexOf('status=“Error”')=-1)
{
request.body.leadid=sr;
var sr=sr.slice(sr.indexOf(“leadeid”);
sr=sr.slice(0,sr.indexOf(“>”);
edDoc=新的edModel(request.body);
edDoc.save();
send({response:sr});
}
其他的
{
send({response:sr});
}
}
其他的
{
response.send({response:“重复潜在客户。
我们的数据库中已存在具有此编号的潜在客户”}); } }); }); }); //将数据写入请求主体 请求写入('data\n'); 请求结束(); }

我在server.js文件中有几个这样的if-else条件

在节点0.8.20中,有一个关于该问题的bug。尝试使用http.get而不是http.request。或者,如果您使用的是0.8.20版本,就不要使用它。

您能提供一个指向此错误的链接以供将来参考吗?