在NodeJS上使用ExpressJS时,我有如下代码:
app.get('/keys/readresults/:keyname', basic_auth, function(req,res){
res.writeHead(200, {'content-type': 'text/json'});
setInterval(
go_to_database_and_get('stuff', function (database_replies) {
res.write(database_replies)
})
,5000);
});
这段代码是为了简化而编写的(如果有人想要真正的代码,我乐意在某个pastebin上发布它)。
当我执行curl -u username:password http://localhost:4000/keys/readresults/key
时,会发生与我预期完全相同的事情:我会收到一个200状态头,它会检查数据库中是否有任何我想要的结果并将响应写回给我,然后等待5秒钟,在数据库中搜索新结果并再次写回响应,并且每隔5秒钟如此进行一次。
问题是,当我退出curl时,循环将永远继续下去。 我该如何告诉express或nodejs,它应该在请求结束时(使用clearInterval)结束该循环?
req
和res
对象扩展了node.js核心中的原生HTTPRequest
和HTTPResponse
对象。因此可以回退到这些方法。 - Raynoson-finished
中间件。 - Ahmed Fasih