Foros del Web » Programación para mayores de 30 ;) » Java »

Servlet Java para crear simil Comet

Estas en el tema de Servlet Java para crear simil Comet en el foro de Java en Foros del Web. 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, ...
  #1 (permalink)  
Antiguo 19/04/2010, 19:59
Avatar de ezefarina  
Fecha de Ingreso: junio-2009
Mensajes: 91
Antigüedad: 14 años, 10 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
  #2 (permalink)  
Antiguo 19/04/2010, 20:02
Avatar de ezefarina  
Fecha de Ingreso: junio-2009
Mensajes: 91
Antigüedad: 14 años, 10 meses
Puntos: 2
Respuesta: Servlet Java para crear simil Comet

Lo postee en jQuery y en Java, porque no me decidía en cuál sería el más apropiado. Sepan disculparme
  #3 (permalink)  
Antiguo 20/04/2010, 13:57
Avatar de ezefarina  
Fecha de Ingreso: junio-2009
Mensajes: 91
Antigüedad: 14 años, 10 meses
Puntos: 2
Respuesta: Servlet Java para crear simil Comet

Ya lo conseguí. Se resuelve utilizando un Response con content type multipart. Esto lo resuelve muy facilmente el MultipartResponse, incluido en el cos.jar de O'Reilly. De cualquier manera, los multipart responses, son solo soportados por Firefox de maravilla, Chrome a medias, tratandolo como un request NO multipart, y en IE ni hablar... "Warning, this feature is not supported" jajajaj nuestro queridisimo IE de mierda jajaj. Así que terminé descartando esta opción por ser poco viable. Terminé utilizando AJAX Polling :)

Slds, y gracias por no responder jajajja

Etiquetas: ajax, comet, jquery, servlet
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:21.