2016-08-19 3 views
0

got을 사용하여 요청을 스트리밍합니다. 스트림을 처음 사용하는 경우 오류를 처리하는 가장 좋은 방법은 무엇인지 모르겠습니다. 특히이 요청은 오류가있는 경우 응답을 파이프하지 않고 catch하려는 403을 보낼 수 있습니다. 이 예에서 스트림 오류 처리

got.stream(url) 
.on("error", (e) => { 
    console.log(e) 
}) 
.pipe(res) 

는 응답이 여전히 응답이 403을 반환하는 경우에도 res에 파이프를 얻을 것이다. 파이프 라인으로부터 응답을 유지하는 올바른 방법은 무엇입니까, 아니면 이것에 대해 더 잘하거나 더 관용적 인 방법이 있습니까?

+0

명시 적 미들웨어 또는 노드의 HTTP 요청 처리기에서'got '을 사용하고 있습니까? – winter

+0

@winter inside express middleware. – carebdayrvis

답변

1

내 블로그를 가리키는 url으로 코드를 시도했습니다. 그러나 got 인스턴스에서 pipe을 호출하면 error 이벤트가 트리거되는지 여부에 상관하지 않는 것으로 보입니다.

그래서, 여기에 해결 방법은 다음과 같습니다

got.stream(url) 
    .on('response', response => { 
    response.pipe(res); // pipe to express's res. 
    }) 
    .on('error', err => { 
    // handle error 
    }); 

대신 got 객체에서 직접 pipe를 호출하면 파이프에 대한 응답 이벤트에 대한 다른 응답 스트림에 도착 응답을들을 수 있습니다.

+0

감사합니다. 나는이 방법을 해결해야한다고 생각했지만'.on ('response')'콜백에서 응답을 파이프하는 것만을 생각하지 않았다. – carebdayrvis

+0

@carebdayrvis 괜찮습니다. – winter