En el servidor, con php hago un loop infinito hasta que se cumpla cierta condicion, el tiempo maximo de ese loop es de 20 segundos, despues de eso cierra la conexion enviando un 'timeout' como respuesta. Luego, se vuelve a crear una conexion y asi.
El problema es este:
Cuando se hace un request, el servidor hace el loop, y si el usuario hace otro request cuando todavia no se cerro la conexion anterior, el servidor espera a que primero se cierre la conexion anterior para procesar la nueva. (Estoy usando Apache en linux).
Una posible solucion:
Al realizar el segundo request se aborte el primero.
Creo necesito usar el metodo abort() del objeto 'rpc'
Pero no se donde deberia ir eso..
alguna ayuda??
Código:
function sendRequest()
{
var rpc=aj();
if(rpc){
rpc.open('POST','center.php',true);
rpc.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
var aEnviar='';
for(ii=0; ii<arguments.length;ii++){
aEnviar+=arguments[ii].desc+'='+encodeURIComponent(arguments[ii].dato)+'&';
}
rpc.onreadystatechange=function(){
if(rpc.readyState==4){
if(rpc.status >= 200 && rpc.status < 300)
{
//Handle Response
handleResponse(rpc.responseText);
}else{
alert('Se perdio la conexion');
}
}else{
//precarga
}
}
rpc.send(aEnviar);
}
}
function aj(){
if(window.XMLHttpRequest){
return new XMLHttpRequest();
}
else{
try{
return new ActiveXObject('Microsoft.XMLHTTP');
}catch(e){
alert('tu navegador no soporta ajax');
return false;
}
}
}