Tengo una aplicación nativa de reacción que usa un servidor AWS, escrito en Python, que está conectado a través de WebSockets.
Cuando los usuarios se alejan de la aplicación por un tiempo mayor a ~30 segundos, se desconectan del servidor y el WebSocket se cierra.
Esto evita que nuestros usuarios puedan hacer nada dentro de la aplicación, ya que el cierre de WebSocket evita que la interfaz de la aplicación se comunique con el servidor.
Intenté realizar un "CPR" en el WebSocket para que cuando se desconecte, se vuelva a conectar al servidor.
A continuación se muestra mi código en la interfaz que intenta volver a conectar la aplicación:
global.number_of_attempts = 20 function restore_attempts(){ if (client_instance.websocket.is_connected){ global.number_of_attempts = 20 // reset on success console.log(number_of_attempts, 'number of attempts is here') } } function websocketCPR() { client_instance = new UserClient(DEFAULT_SETTINGS) client_instance.connect() //this allows it to connect to ws setTimeout(restore_attempts, 10000) // reset on success client_instance.websocket.onclose = function(evt) { console.log("THE WEBSOCKET IS NOW _CLOSED__") global.number_of_attempts = global.number_of_attempts - 1 console.log(global.number_of_attempts, 'it is attempted') if (global.number_of_attempts > 0){ client_instance = null setTimeout(websocketCPR, 500) } } } client_instance.websocket.onclose = function(evt) { console.log("THE WEBSOCKET IS NOW _CLOSED__") global.number_of_attempts = global.number_of_attempts - 1 console.log(global.number_of_attempts, 'it is attempted') if (global.number_of_attempts > 0){ client_instance = null setTimeout(websocketCPR, 500) } }