javascript - 如何制作一个 NodeJS 服务器,在连接时按时间间隔逐行发出字符串文件?

标签 javascript node.js node.js-stream

我正在尝试实现一个简单的 NodeJS 服务器,它读取文件,然后逐行向请求者发送,发送之间有一定的时间间隔。问题是超时没有按预期工作。

var http = require('http');
var readline = require('readline');
var fs = require('fs');

var server = http.createServer(function (req, res) {
  console.log('request was made: '+req.url);

  res.writeHead(200,{'Content-Type': 'text/plain'});

  var myReadStream = fs.createReadStream(__dirname+"/foo.txt", 'utf8');

  var rl= readline.createInterface({
    input: myReadStream
  });

  rl.on('line', function(input) {

    res.write(input);
    setTimeout(function(){}, 3000);

  });

});


server.listen(3000,'127.0.0.1');

最佳答案

您几乎已经完成了,只需将 res.write(line) 移至 setTimeout() 中,以便在调用超时回调时调用 res.write(line)

rl.on('line', line => {
  setTimeout(() => {
    res.write(line);
  }, 3000);
});

此外,您还应该监听来自 readline'close' 事件,以了解何时可以调用 res.end() 来结束响应流。

rl.on('close', () => {
  res.end();
});

关于javascript - 如何制作一个 NodeJS 服务器,在连接时按时间间隔逐行发出字符串文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43074617/

相关文章:

javascript - 检查文件是否存在于不同的服务器上

javascript - JavaScript 中的多维关联数组

Javascript - 使用 window[funcName] 时如何运行导入的函数?

javascript - 使用 gulp-watch 忽略隐藏文件

node.js - 使用 Raygun 的 Express-handler 后如何关闭进程?

node.js - 如何将图像写入具有缓冲区的服务器?

jquery - 如何将 JSON 对象流读入浏览器

javascript - 如何测试/模拟 react 钩子(Hook)?

javascript - 重复输出到控制台 - 我必须在哪里插入我的回调?

node.js - node.js 进程的额外 stdio 流