私は、次のエラー処理を実現しようとしています:ターゲットストリームからエラーイベントが発生した場合、何らかの形でソースストリームを再利用できますか?
- たちは
readable
ストリームを持っていると言います。 transform
ストリームにパイプします。- 何とか
transform
ストリームはerror
を放出します。 readable
ストリーム(およびそのすべてのデータ)を回復し、もう1つのtransform
ストリームにパイプし直したいとします。
ステップ4は困難ように表示されます。私は、ターゲットストリーム(transform
ストリーム)のunpipe
イベントに耳を傾け、ソース・ストリーム(readable
ストリーム)への参照を取得することができますが、そのデータの少なくとも一部のチャンク失われている。
カスタムトランスフォームストリームを作成せずにこれを行うことはできますか?
現実世界の例では、deflate
コンテンツのエンコーディング、where in some casesである、あなたはzlib.createInflateRaw()
代わりのzlib.createInflate()
を必要とするが、我々は1つが、応答本体のバッファを見る前に、正しい選択であるかを決定することはできません。
最近ではほとんどのサイトでgzipがサポートされていませんか?あなたの要求に 'Accept-Encoding:gzip'を送るだけで、何の問題も心配する必要はありません。 – mscdex
@mscdexあなたは正しいですが、httpライブラリのために古いものや狂ったものだけを無視することはできません。私はこれをやり終えました。 https://github.com/bitinn/node-fetch/blob/master/index.js#L209-L222 – bitinn