Ale*_*ani 6 javascript webserver node.js
好,
我是node.js的新手.开始尝试,我正在关注Ryan Dahl(http://www.youtube.com/watch?v=jo_B4LTHi3I)的介绍,此时(大约0:17:00)有一个关于如何服务器的解释处理回应,
基本的例子是从webserver获得一个'hello'输出,然后在2秒之后出现'world',这段代码应该这样做
//Require the webserver library
var http = require('http');
var server = http.createServer(function(req, res) {
res.writeHead(200, { 'content-type' : 'text-plain' });
res.write('Hello\n');
//Asynchronous behavior
setTimeout(function() {
res.end('World\n');
}, 2000);
});
server.listen(3000);
Run Code Online (Sandbox Code Playgroud)
所以我运行它,我得到了Hello World,但是只有一个来自服务器的响应有完整的结果,即请求> 2秒>'Hello World'.而不是请求> Hello> 2秒>世界.
为什么?,我该如何改变这种行为?
我正在使用v0.8.18,curl -i http://localhost:3000返回正确的标题...
HTTP/1.1 200 OK
content-type: text-plain
Date: Sat, 26 Jan 2013 18:10:05 GMT
Connection: keep-alive
Transfer-Encoding: chunked
在开始渲染之前,浏览器会缓冲传入的数据,直到收到一些数量.您的节点代码正如您所期望的那样,它将发送响应的第一部分,然后等待2秒,然后发送后半部分.
如果要观察此行为,可以发送一堆空格以使浏览器清空其缓冲区.如果在初始写入后添加此项,您将看到浏览器呈现请求的前半部分.
var str = '';
for (var i = 0; i < 2000; i++){
str += ' ';
}
res.write(str);
Run Code Online (Sandbox Code Playgroud)
显然不要在实际代码中这样做,但是展示行为是很好的.
| 归档时间: |
|
| 查看次数: |
1542 次 |
| 最近记录: |