【问题标题】:Node.js can't res.write until res.end is called (chunked)Node.js 不能 res.write 直到 res.end 被调用(分块)
【发布时间】:2013-10-03 14:50:09
【问题描述】:

这是书中的一个例子:“Professional Node.js”。它应该每秒输出一个时间戳,持续 3 秒。但是在调用 res.end() 之前什么都没有出现:(页面加载时 3s,在所有出现在屏幕上之前......)

require('http').createServer(function (req, res) {
    res.writeHead(200, { 'Content-Type': 'text/plain' });
    var left = 3;
    var interval = setInterval(function () {
        res.write(Date.now() + " ");

        left -= 1;
        if (left === 0) {
            clearInterval(interval);
            res.end();
        }
    }, 1000);
}).listen(4000);

你也是这样吗?

[编辑:]我找到了这个Simple Node.js server which responds in chunked transfer encoding 它也对我不起作用......(所有都在 end() 调用 ~5s 之后显示)强>

【问题讨论】:

标签: node.js chunked


【解决方案1】:

对我来说很好用。所以这取决于你如何测试它,因为浏览器、curl 和类似的东西会缓冲东西。

GET / HTTP/1.1

HTTP/1.1 200 OK
Content-Type: text/plain
Date: Fri, 27 Sep 2013 11:21:22 GMT
Connection: keep-alive
Transfer-Encoding: chunked

e
1380280883375 
e
1380280884378 
e
1380280885380 
0

【讨论】:

  • 我使用了 telnet,它也可以。但不是在浏览器中:s 我不知道为什么......我可以停用缓冲区吗?
  • 当然,Chromium 项目只有超过一百万行代码,您只需要找到合适的。 如果您需要在浏览器中自动更新内容,请使用合适的工具,例如 websockets。
  • 分块编码在开始之前不知道必须传输多少信息时很有用,例如流式传输。它有效。没有人保证这部分信息在交付时会显示出来。
  • 好的,谢谢。对于那些必须做同样研究的人:stackoverflow.com/questions/13557900/…stackoverflow.com/questions/237553/…
猜你喜欢
  • 1970-01-01
  • 2017-10-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-19
  • 1970-01-01
  • 2020-08-08
  • 1970-01-01
相关资源
最近更新 更多