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