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