2017-03-28 9 views
0

파일을 읽고 난 후 방출 사이의 시간 간격으로 요청자에게 줄 단위로 방출하는 간단한 NodeJS 서버를 구현하려고합니다. 문제는 의도 한대로 작동하지 않는 시간 초과입니다. 당신은 거의 다연결될 때 시간 간격을두고 한 줄씩 문자열 파일을 내보내는 NodeJS Server를 만드는 방법은 무엇입니까?

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'); 

답변

3

당신은 제한 시간 콜백이 호출 될 때 setTimeout() 그렇게 res.write(line)에 대한 호출이 발생 당신에 res.write(line)를 이동해야합니다.

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

또한 당신은 응답 스트림을 종료 res.end()를 호출 할 때 알고 readline에서 'close' 이벤트를 수신합니다.

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