79231334

Date: 2024-11-27 17:40:21
Score: 3
Natty:
Report link

Será tarde para opinar? ya pasaron casi 10 años de está pregunta, acabo de tener precisamente esté problema y se resuelve teniendo la conexión abierta, fácil como un bucle, pero hay que precisar que esto sería para ser usado más como un socket que como una petición al servidor:

@WebServlet("/events")
public class SSEServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
        System.out.println("1");
        resp.setContentType("text/event-stream");
        resp.setCharacterEncoding("UTF-8");
        resp.setHeader("Cache-Control", "no-store");
        resp.setHeader("Connection", "keep-alive");
        resp.setStatus(HttpServletResponse.SC_OK);
    
        while(true) {
            PrintWriter writer = resp.getWriter();
            writer.write("data: Evento disparado desde SSE\n\n");
            writer.checkError();
            writer.flush();
            try {
                Thread.sleep(2000);
            } catch (InterruptedException ex) {
                Logger.getLogger(SSEServlet.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    }
}
Reasons:
  • Blacklisted phrase (1): está
  • Blacklisted phrase (2): pregunta
  • Long answer (-1):
  • Has code block (-0.5):
  • Contains question mark (0.5):
  • Low reputation (1):
Posted by: Alex Villatoro