每当向NodeJS express服务器发送请求超过120秒以响应客户端时,我都会遇到请求超时错误。
我尝试使用request.setTimeOut(200000);
增加服务器超时,但只有从localhost访问时才有效..并且通过IP地址超时。在网站上运行时同样的问题。
请查找我的服务器代码以保留请求超过120秒:
var express = require('express')
var app = express();
app.set('port', process.env.PORT || 3003);
app.listen(app.get('port'));
app.post('/cmfm', function (req, res) {
req.setTimeout(600000);
//req.socket.setKeepAlive(true,1);
var startTime = (new Date()).getTime();
var response = {};
response.data = 1;
console.log('request starts to process.. ');
setTimeout(function () {
var endTime = (new Date()).getTime();
console.log('Total Time taken to run --> ' + (endTime - startTime));
res.json(response);
}, 180000);
});
客户端代码请求服务器:
$.ajax({
url: "/cmfm",
type: "POST",
contentType: "application/json", // content type is must
cache: false,
}).done(function (resultdata) {
alert('timout passed - ' + resultdata.data);
})
.fail(function () {
alert('Timout failed');
});
这
本地主机:3003
它按预期工作。 ajax done在180秒后被触发
IPADDRESS:3003
它会在120秒后触发ajax.fail(),而不会在服务器中完成setTimeOut Callback fn。
请帮我解决这个问题。
答案 0 :(得分:1)
不确定,但您可以尝试设置超时客户端
$.ajax({
url: "/cmfm",
type: "POST",
contentType: "application/json",
timeout: 200000,
cache: false,
}).done(function (resultdata){
alert('timout passed - ' + resultdata.data);
}).fail(function() {
alert('Timout failed');
});
否则,似乎连接超时是由客户端和服务器之间的某些东西触发的(例如代理,防火墙,ecc ......)