Wenn ich versuche, die HTTP-Stream-Verbindung aus irgendeinem Grund zu verwenden, wird der Schreibvorgang nicht ausgeführt, bis ich anrufe
Antwort.End ()
Ich nehme den Code direkt von der Demo und verstehe nicht, was mein Problem ist
Wenn ich mich zum Server wölbe, sind meine Header korrekt.
Warum sendet der Server keine Schreibdaten?
Ich bin Browser-spezifisches Verhalten - Firefox zeigt die Daten ("Hello:") sofort an, während Chrome zu puffern scheint und wartet bis die Antwort beendet ist. Beachten Sie, dass chrome auch die Daten sofort anzeigt, wenn Sie zuerst mehr Daten schreiben (z. B. habe ich 1000 "Hallo" geschrieben).
Ich glaube, ich verstehe, was du meinst ...
Aus den node.js-Dokumenten:
Beim ersten Aufruf von response.write () werden die gepufferten Header-Informationen und der erste Text an den Client gesendet. Beim zweiten Aufruf von response.write () geht Node davon aus, dass Sie Daten streamen werden, und sendet diese separat. Das heißt, die Antwort wird bis zum ersten Teil des Körpers gepuffert.
(Nice Port Nutzung BTW :))
Versuchen Sie, Ihren Code mit telnet oder nc zu überprüfen. Curl puffert normalerweise die letzte Zeile
Nachdem Sie die fehlende geschweifte Klammer repariert haben, funktioniert Ihr Code für mich von einem Browser aus. Curl von der Kommandozeile scheint auf die volle Antwort zu warten, aber wireshark bestätigt, dass es chunked encoding verwendet und die Antwort in beiden Fällen in zwei Pakete aufgeteilt wurde.
Ich nehme an, dass die Curl-Ausgabe liniengepuffert ist und nach "World" auf den Zeilenumbruch wartet, bevor etwas gedruckt wird. Sie können dies bestätigen, indem Sie nach "Hallo:" einen weiteren Zeilenumbruch drucken.