Node Js Probleme mit der Antwort.schreiben
Wenn ich versuche zu nutzen, um http-stream-Verbindung aus irgendeinem Grund schreiben wird nicht entleert, bis ich Anruf
Antwort.Ende()
Ich nehme den code direkt aus der demo und nicht verstehen, was mein problem ist.
Wenn ich den curl auf dem server mein Header korrekt sind.
HTTP/1.1 200 OK
Content-Type: text/plain
Connection: keep-alive
Transfer-Encoding: chunked
var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.write('hello');
res.write(':');
setTimeout(function(){
res.end('World\n')},
2000);
}).listen(1337, "127.0.0.1");
console.log('Server running at http://127.0.0.1:1337/');
Warum ist der server nicht senden die Daten schreiben?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich zu sein scheint browser-spezifisches Verhalten-firefox zeigt die Daten ("Hallo:") sofort während chrome scheint es zu Puffern und zu warten, bis die Reaktion beendet ist. Beachten Sie, dass chrome auch zeigt die Daten sofort, wenn Sie schreiben, mehr Daten auf den ersten (z.B. ich schrieb 1000 "Hello"s).
Ich glaube, ich verstehe, was du meinst...
Aus der node.js docs:
Ersten mal Antwort.write() aufgerufen wird, sendet die gepufferten header-Informationen, und der erste Körper, der an den client. Das zweite mal Antwort.write() aufgerufen wird, Knoten davon ausgegangen, dass Sie gehen, um sein streaming-Daten und sendet diese separat. Das heißt, die Antwort wird zwischengespeichert, bis der erste Brocken Körper.
http://nodejs.org/docs/v0.4.7/api/all.html#response.write
(Nice port-Nutzung, BTW 🙂 )
Versuchen, überprüfen Sie Ihren code mit telnet oder nc. curl in der Regel Puffer letzten Zeile
Nach dem beheben die fehlende geschweifte Klammer, dein code ist für mich arbeiten in einem browser. Curl über die Kommandozeile scheint zu warten, für die vollständige Antwort, aber wireshark bestätigt, dass es nicht die aufgeteilte Codierung und die Resonanz war aufgeteilt in 2 Pakete in beiden Fällen.
Ich gehe davon aus, dass die curl-Ausgang ist line buffered und warten auf den Zeilenumbruch nach der "Welt", bevor er druckt nichts. Sie können dies überprüfen, durch das drucken von einem anderen Zeilenumbruch nach 'Hallo:'.
dies ist aufgrund verpasste einschließenden "}" in deinem code an der position nach
res.end('World\n')
und vor dem Komma.