2013-06-18 62 views
0

我有一个节点应用程序将数据发布到远程apis并获取响应。它工作正常,但有时节点服务器崩溃并生成以下errror:套接字挂起和节点崩溃

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) 

我用Google搜索,发现它发生由于一些超时的事情,但我真的不知道对如何克服这一点。 这里是我的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(); 
    } 

我在server.js文件中几个这样的,如果其他条件。

回答

0

在节点0.8.20中存在关于该问题的错误。尝试使用http.get而不是http.request。或者只是不使用0.8.20,如果你使用该版本。

+0

您能否提供此错误的链接以供将来参考? – Jimbo

+0

我使用的是0.8.16 – beNerd