Estoy usando eventos enviados por el servidor para mi pequeña aplicación de chat, y estoy almacenando una lista de eventos enviados en mi servidor, además de pasar un campo de id con un mensaje SSE.
Server Sent Events aparentemente tiene un concepto de reconexión automática, pero parece que no puedo encontrar una sola instancia en la que esto realmente ocurra en la práctica.
Por ejemplo, si está en Android y sale de la aplicación, espere 30 segundos y luego vuelva a entrar, entonces la conexión se interrumpe. Pero el evento onerror nunca ocurre y readyState permanece OPEN . Entonces, la única opción para manejar esta situación parece sondear los latidos del corazón y hacer una reconexión manual reiniciando el objeto EventSource si curr_time - last_heartbeat > heartbeat_interval
Otro caso de desconexión es cuando, por ejemplo, deshabilita WiFI y luego lo vuelve a habilitar. Sin embargo, cuando esto ocurre, Android Chrome simplemente actualiza automáticamente la página, por lo que la reconexión tampoco ocurre aquí (en su lugar, solo se actualiza, lo que provoca una desconexión y luego una nueva conexión).
Entonces, ¿me estoy perdiendo algo? SSE se promociona como muy robusto por su capacidad de reconexión automática, pero no puedo encontrar un solo caso en el que realmente realice una reconexión. ¿Qué casos hay en los que realmente puede ocurrir una reconexión, de modo que pueda probar este comportamiento?