2017-03-20 5 views
2

Gibt es eine Möglichkeit, konnte ich kontinuierlich eine Antwort an den Client senden, bevor schließlich end auf dem response Objekt aufrufen?Kontinuierlich eine Antwort an den Client senden

Es gibt eine riesige Datei und ich möchte lesen, analysieren und dann die Analyse zurück an den Client senden. Ist es möglich, dass ich eine Antwort sende, sobald ich eine Zeile lese?

response.send auch Anrufe end, so kann ich es nicht verwenden.

Antwort

2

Sie wollen res.write verwenden, die ohne Einstellung der Antwort Antwort Körperinhalt sendet:

Diese ein Stück des Antworttext sendet. Diese Methode kann mehrere Male aufgerufen werden, um aufeinanderfolgende Teile des Körpers bereitzustellen.

Beachten Sie, dass write nicht im Express documentation enthalten ist, weil es nicht eine Express-spezifische Funktion, sondern wird von Knoten Kern http.ServerResponse geerbt, die Express Antwort Objekt erstreckt sich von:

Das res Objekt ist eine erweiterte Version des eigenen Antwortobjekts des Knotens und unterstützt alle integrierten Felder und Methoden.

jedoch mit Streaming-Daten arbeiten, ist immer etwas schwierig (Kommentar unten Warnung über unerwartete Timeouts sehen), so kann es einfacher sein, Ihre Anwendung zu restrukturieren Streaming-Daten über ein WebSocket oder socket.io für die Kompatibilität mit Browsern senden die WebSockets nicht unterstützen.

+1

Beachten Sie, dass, obwohl dies die historische Art ist, Dinge zu tun, hat es eine Reihe von Unzulänglichkeiten (einschließlich Timeouts an verschiedenen Stellen auf dem Weg), so würde ich heute stattdessen Sockets empfehlen. – jcaron

Verwandte Themen