Tengo una pregunta sobre SSEEmitter en Java Spring Boot. Tengo el siguiente código para establecer la conexión entre el cliente y el servidor en Java Spring Boot. Establecí el tiempo de espera del objeto SseEmitter en el valor máximo de long.
Ahora ocurre lo siguiente: cierro la pestaña en el navegador y el objeto sseemitter en el servidor no se cierra. Hay tantos objetos en el servidor. Esto conduce a problemas de memoria.
@RequestMapping(value = "/subscribe", consumes = MediaType.ALL_VALUE) public SseEmitter subscribe() { System.out.println("SUBSCRIBE CALLED!"); System.out.println(emitters.size()); SseEmitter x = new SseEmitter(Long.MAX_VALUE); try { x.send(SseEmitter.event().name("INIT")); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } x.onCompletion(()->{ System.out.println("ON COMPLETION CALLED!"); emitters.remove(x); }); x.onTimeout(()->{ System.out.println("ON TIMEOUT CALLED!"); emitters.remove(x); }); emitters.add(x); return x; }¿Cómo puedo decirle al cliente que cierre el objeto? Saludos cordiales