Para resumir, la idea es trabajar dejando las peticiones gets abiertas, para que el chat no tenga que buscar mensajes cada n segundos.
Entonces tengo una funcion que utiliza el SendAndLoad para buscar los mensajes, y otra para los usuarios en linea.
El problema es que al parecer no pueden estar juntas, es como si una bloqueara la otra y no puedo realizar peticiones.
He aqui el codigo que estoy utilizando:
Código :
function refreshChat(){
getMensaje.roomid = _root.id;
path = "ChatServletMensajes";
getMensaje.sendAndLoad(path,getMensaje,"GET");
// Hasta aqui se hizo la peticion via GET de los mensajes, esta queda pendiente hasta
// que el servlet le responda.
}
getMensaje.onLoad = function(success:Boolean){
if(success){
agregarMensaje(getMensaje.mensaje); //Agrega el mensaje a la sala de chat.
_root.enableRefresh=false;
_root.refreshChat(); // Se llama de nuevo para oir nuevos mensajes.
}else{
trace("FAIL");
}
};
var getUsuarios:LoadVars = new LoadVars ();
function refreshUsuarios(){
getUsuarios.usuarios="";
path = "ChatServletUsuarios";
getUsuarios.sendAndLoad(path,getUsuarios,"GET");
// Hasta aqui se hizo la peticion via GET de los usuarios online, esta queda pendiente hasta
// que el servlet le responda.
}
getUsuarios.onLoad = function(success:Boolean){
if(success){
trace("OK");
_root.usuarios.removeAll(); //_root.usuarios es un List
var usuarios:Array = getUsuarios.usuarios.split(";"); //El servlet devuelve un String
for (var i=0; i<usuarios.length-1;i++)
{
var datos:Array = usuarios[i].split(",");
_root.usuarios.addItem(datos[0], {id:datos[1], tipo:datos[2]});
}
_root.refreshUsuarios();
// Se llama de nuevo para ver cuando se actualiza la lista de usuarios.
}else{
trace("FAIL");;
}
};
Realmente desconozco que sucede, lo hago con una pagina web normal, que deja las dos peticiones GET pendientes, y estas reciben la informacion sin problema, pero cuando lo trato de implementar con Flash, el comportamiento es distinto.
Si alguien tiene una idea o alguna sugerencia pues bienvenida sea.
Saludos
