Ver Mensaje Individual
  #1 (permalink)  
Antiguo 19/04/2010, 19:59
Avatar de ezefarina
ezefarina
 
Fecha de Ingreso: junio-2009
Mensajes: 91
Antigüedad: 15 años, 6 meses
Puntos: 2
Servlet Java para crear simil Comet

Hola gente. Espero puedan ayudarme. Estoy intentando hacer una especie de "Comet", AJAX Push, o AJAX inverso, o como quieran llamarlo. Tengo un Servlet Java, el cual recibe un request, y no lo deja morir, escribiendo en el response cada cierto tiempo, y haciendo flush del response tras cada escritura. El problema es que esto quise integrarlo con post o get, de jQuery. El problema es que la función de callback SOLO SE EJECUTA CUANDO EL REQUEST FINALIZA. Solo cuando finaliza realmente, y no cuando hago Flush. Por http comun y corriente, el resultado va llegando cada tanto como debe ser. Pero lo que necesitaba era que se llamara un callback tras cada llegada de contenido. Alguien sabe como puedo lograr esto?

primero el servlet hacía esto:
Código:
			response.setContentType("text/plain");
			int i=0;
			while(i<6) {
				response.getWriter().println("Holaa"+i);
				response.getWriter().flush();
				Thread.sleep(1000);
				i++;
			}
Luego lo modifique por esto:
Código:
			response.setContentType("text/plain");
			int i=0;
			while(i<6) {
				String hola = "Holaa"+i;
				response.getWriter().println(hola);
				response.setContentLength(hola.length());
				response.setStatus(200);
				response.getWriter().flush();
				Thread.sleep(1000);
				i++;
			}
Y lo que hice fue poner un alert del output en el callback del post de jQuery. El resultado fué que esperó a que todo termine de ejecutarse, y me mostró el output completo. Pero si yo cargo el mismo servlet en el browser directamente, la salida va apareciendo tras cada flush !!

Muchas gracias
Slds