如何使 NodeJS 服务器在连接时以一定的时间间隔逐行发出字符串文件?

How to make a NodeJS Server that emits a string file line by line with a time interval when connected?

我正在尝试实现一个简单的 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();
});