首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用NodeJS流式传输Http响应

使用NodeJS流式传输Http响应
EN

Stack Overflow用户
提问于 2012-03-18 00:33:47
回答 1查看 15.5K关注 0票数 7

我正在试验来自一个简单的NodeJS HTTP服务器的各种响应。我试图达到的效果是更快地呈现网页的视觉效果。因为响应是通过transfer-encoding: chunked流式传输到浏览器的(对吗?)我在想,我可以先呈现页面布局,延迟一段时间后再呈现其余的数据。

代码语言:javascript
运行
复制
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');

问题是,除非已经写入的数据足够长,否则响应似乎直到res.end('world')才会发送,因此,例如res.write(new Array(2000).join('1'))而不是res.write('hello')就可以做到这一点。

Node是否会缓冲我的写入,直到数据足够大,可以发送?如果是这样,块大小是可配置的吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-18 01:07:26

在读取结束标记之前,浏览器可能不会呈现数据。尝试输出纯文本而不是html标记来测试这一点。

你看到firebug / chrome检查器中有任何输入吗?

Related Question

http://nodejs.org/api/stream.html#stream_stream_write_string_encoding_fd

将具有给定编码的字符串写入流。如果字符串已刷新到内核缓冲区,则返回true。返回false表示内核缓冲区已满,数据将在将来发送出去。

因此,输出.write()方法的结果。看看它是返回true还是false。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9751711

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档