2013-03-02 4 views
1

노드의 한 단계 다운 스트림 인 클라이언트와 Java 서버 사이에서 API 역할을하는 node.js 서버를 작성하고 있습니다. js API. API는 클라이언트로부터 들어오는 HTML 요청을 받아들이고 다시 형식화 한 다음 Java 서버로 보냅니다. java 서버는 node.js API에 대한 응답을 클라이언트에 반환합니다. 이것은 서버가 다운 된 경우를 제외하고는 모두 훌륭하게 작동합니다. 내가 502 또는 302을 잡을 수있는 것처럼, 해당 이벤트를 잡을 필요가 ... 여기 내 코드입니다 :이 노드 서버를 시작하고 Node.js를 서버에 요청을 실행할 때http.request가 응답하지 않는 서버에 발행 될 때 node.js 오류

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.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)

내가 자바 서버가 다운되면 있도록 "응답"을 잡을 수 없다 할 필요 나는 다른 기능을 실행하거나 노드 충돌없이 클라이언트로 그 사실을 반환 할 수 있습니다! 이것은 매우 간단 할 수도 있지만 작동하는 것을 찾지 못했습니다. 난 process.on ('uncaughtException') 시도, (코드 에서처럼) response.on ('오류') 시도했다.

나는 노드에 익숙하지 않으며 문제가있는 곳을 볼 수 없습니다 ... 어떤 도움을 주시면 감사하겠습니다!

+0

통화 http.request 반환, 서버가 200 [OK] 응답으로 완료됩니까? – D3V

+0

네, 그렇습니다 ... – hkuich

답변

4

는 오류가 Request 오브젝트에 던져지는 것처럼

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://nodejs.org/api/http.html#http_http_request_options_callback) 자바에

+0

맞습니다! 나는 'response.on ('error ')'라고 불렀지 만, 물론 요청시 그것을 호출해야한다 ... 고마워! – hkuich

관련 문제