2016-08-19 10 views
0

私はgotを使用してリクエストをストリーミングしています。ストリームに慣れていないので、エラーを処理する最良の方法は何か分かりません。具体的には、この要求は、私が捕捉したいと思っている403を送信し、エラーがあれば応答をパイプしません。この例ではストリームエラー処理

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

、応答がまだ応答が403を返された場合でも、resにパイプされます。応答がパイプされないようにする正しい方法は何ですか、これについてもっと慣れた方法がありますか?

+0

あなたのエクスプレスミドルウェアまたはノードのhttpリクエストハンドラの中に 'got'を使用していましたか? – winter

+0

@winter内部エクスプレスミドルウェア。 – carebdayrvis

答えて

1

urlと私のブログを指し示すコードを試しました。ただし、gotインスタンスでpipeを呼び出すと、errorイベントがトリガーされるかどうかは気にしないようです。

だから、ここの回避策があります:代わりにgotオブジェクトから直接pipeを呼び出す

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

、あなたはパイプに応答イベントのためにあなたが別の応答ストリームになった応答を聞くことができます。

+0

ありがとう@ウィンター!私はこの方法を回避する必要があると考えていましたが、 '.on( 'response')'コールバックで応答をパイプ処理するだけとは考えていませんでした。 – carebdayrvis

+0

@carebdayrvisようこそ。 – winter

関連する問題