Streaming réponses Http avec NodeJS
Je suis expérimenter avec des réponses différentes à partir d'un simple NodeJS serveur HTTP.
L'effet, je suis en train de réaliser est vite rendu visuel d'une page web. Puisque la réponse est diffusé sur le navigateur avec transfer-encoding: chunked
(à droite?) Je pensais que je pouvais rendre la mise en page de la première et le reste des données après un certain délai.
var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {
'Content-Type': 'text/html'
, 'Transfer-Encoding': 'chunked'
});
res.write('<html>\n');
res.write('<body>\n');
res.write('hello ');
res.write('</body>\n');
res.write('</html>\n');
setTimeout(function () {
res.end('world');
},1500);
}).listen(3000, '127.0.0.1');
Le truc, c'est qu'il semble comme si la réponse n'est pas envoyée jusqu'à res.end('world')
à moins que le déjà écrit des données est assez long, donc par exempleres.write(new Array(2000).join('1'))
au lieu de celares.write('hello')
, ferait l'affaire.
Est le Nœud de mise en mémoire tampon de mon écrit jusqu'à ce que les données est assez importante pour être envoyé? Si c'est le cas, c'est la taille de bloc configurable?
Vous devez vous connecter pour publier un commentaire.
Il est possible que le navigateur n'est pas rendu les données jusqu'à la fermeture des balises ont été lus. Essayez de la sortie de la plaine du texte plutôt que des balises html pour le test.
Voyez-vous une entrée venir dans firebug /chrome inspecteur?
Une Question Relative À La
http://nodejs.org/api/stream.html#stream_stream_write_string_encoding_fd :
Donc en sortie les résultats de
.write()
méthodes. Voir si elle renvoie une valeur true ou false.true
les deux fois. Cette question connexe lié suggère que cette plate-forme, aucune idée de ce que cela signifierait? L'inspecteur de chrome n'affiche le formulaire de réponse temps, le même pour les deux cas. Les données sont également rendus avant la fermeture des balises ont été lues, c'est le même comportement lors de l'utilisation uniquement en texte brut.\n
)