Ich versuche folgende Fehlerbehandlung zu erreichen:Wenn der Zieldatenstrom Fehlerereignisse ausgibt, können wir den Quelldatenstrom irgendwie wiederverwenden?
- Sagen wir einen
readable
Strom haben. - Wir leiten es in einen
transform
Strom. - Irgendwie sendet der
transform
Strom eineerror
. - Wir möchten den
readable
Stream (und alle seine Daten) wiederherstellen, und es erneut in einen anderentransform
Stream pipen.
Schritt 4 erscheint schwierig zu sein: Ich unpipe
Ereignis auf dem Zielstrom hören (transform
Stream) und einen Verweis auf den Quellenstrom (readable
Stream) abzurufen, aber zumindest einige Stücke seiner Daten wurden verloren.
Können wir dies tun, ohne einen benutzerdefinierten Transformations-Stream zu erstellen?
Ein reales Beispiel ist deflate
Inhaltscodierung, where in some cases Sie zlib.createInflateRaw()
statt zlib.createInflate()
brauchen, aber wir können nicht entscheiden, welche die richtige Wahl bei der Antwort Körper Puffer vor der Suche sein würde.
Unterstützen die meisten Seiten gzip in diesen Tagen sowieso nicht? Senden Sie einfach "Accept-Encoding: gzip" in Ihre Anfrage und Sie müssen sich keine Gedanken über Deflate-Probleme machen. – mscdex
@mscdex Sie sind richtig, aber für eine http-Bibliothek können wir diese alten und verrückten Deflate-only-Server nicht ignorieren, endete ich dabei, scheint das Beste, was ich im Moment tun kann. https://github.com/bitinn/node-fetch/blob/master/index.js#L209-L222 – bitinn