我正在尝试使用以下POST ajax调用来调用后端控制器
$http({
url: 'WS/datagen/' + userID + '/' + rows+'/'+validatePrimaryKey,
method: "POST",
timeout: 300000,
data: $scope.cnentity
}).then(function(response) {
// success
$rootScope.loading = false;
if (response.data == true) {
$rootScope.myAlertElm.html('<span style="color:Green;"><strong>Data Generated Successfully !! \n Please click "Check Data availability" again</strong><span>');
}
else {
$rootScope.dgAlertElm.html('<span style="color:Red; "><strong>Data generation cannot be done for conditions containing primary key!</strong><span>');
return false;
}
console.log("hitting the query service");
},
function(response) { // optional
// failed
console.log("Failure");
$scope.delta = ( ( new Date() ).getTime() startedAt.getTime() );
console.log($scope.delta);
});
然后响应超时并产生此消息。
Failure<HEAD><TITLE>Connection Timed Out</TITLE></HEAD>
<BODY BGCOLOR="white" FGCOLOR="black"><H1>Connection Timed Out</H1><HR>
<FONT FACE="Helvetica,Arial"><B>
Description: Connection Timed Out</B></FONT>
<HR>
<!-- default "Connection Timed Out" response (504) -->
</BODY>
当多个用户尝试调用此程序时,会随机发生这种情况。后端程序是同步和多线程的。它按顺序按用户执行用户,每个用户请求可能需要3分钟,有时甚至更多。在此等待期间,正在发生超时。
我试图增加apache超时和ajax http超时,但它没有解决任何问题。 如何避免或增加此超时? long-polling / websocket会帮忙吗?如果是,如何实施邮局调用?