摘要:解决:在nodejs中调用服务,若超过2分钟服务没有返回数据,node会再次请求服务。
加班的日子总算暂时结束了,才发现下午6点钟的天还没有黑!开始我的总结吧。。。
去年的某个项目用nodejs开发,前端和部分后端放到nodejs中处理,与数据库的交互是用C#写的WCF服务。然后前端用Ajax请求,node后端调用WCF服务取数据。 由于表中数据量很大,查询速度很慢,加上查询出的数据,需要经过一些表关联显示,所以处理时间较长。几次测试之后发现,在整整2分钟的时候,若服务还没有返回数据,就响应为再次请求,显然,这个是不行的。首先想到把Ajax请求的超时时间设置下,测试发现不可行。调试后发现,2分钟后node会再次发起请求。网上查找好多资料,发现node用户还是比较少吧,资料很少。忘记在哪个地址看到说node有个默认2分钟机制,超过后会再次请求,给http设置超时时间为0即可解决,到官网一看,果然有个setTimeout方法:
https://nodejs.org/api/http.html#http_response_settimeout_msecs_callback
加上如下代码之后,即可解决:
response.setTimeout(, function(){'写入日志'});
在每个请求的响应里设置一下,岂不是很麻烦,尝试在端口监听位置,设置,测试后发现,ok。
var server=http.createServer(app);
server.setTimeout();