Así que actualmente estoy usando socket.io para una pantalla de carga y simplemente no funciona, así que voy a probar una solución diferente. Necesito que suceda lo siguiente: el usuario abre mi aplicación; esto desencadena una función en el lado del servidor (función de extracción intensiva de CPU que demora aproximadamente 8 segundos). Tan pronto como se realiza la función, debo notificar al cliente que la función se realiza y el cliente obtiene los resultados (después de obtener este resultado, la pantalla de carga de la aplicación se cierra y el usuario ingresa a la aplicación).
Mi implementación actual utiliza emisiones de socket.io y procesa la función de raspado a través de la cola de Redis en un subproceso en segundo plano.
¿Existe un enfoque diferente para hacer esto en lugar de una conexión de socket y enviar emisiones desde el cliente -> servidor y viceversa?
No creo que pueda simplemente con una solicitud GET clásica, porque ¿no es una mala práctica dejar abierta una solicitud de ejecución prolongada (8 segundos) durante tanto tiempo mientras se espera una respuesta? Además, investigué los eventos enviados por el servidor, pero no estoy seguro de poder usarlos en este caso.
¡Cualquier idea es muy apreciada!
8 segundos es más de lo normal para una respuesta de un servidor "saludable", pero aún así debería estar bien. Simplemente usaría un GET del cliente móvil y lo escribiría para no bloquear la interfaz de usuario mientras espera.
Escriba su interfaz de usuario para que informe al usuario que está esperando una respuesta, y tal vez incluso le dé una idea de cuánto tiempo puede tardar la respuesta.
Algunos puntos a tener en cuenta.