es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Estructura de Polling por Usuario en NodeJS – Mejores prácticas

Mi proyecto es una aplicación de pila completa donde un cliente web se suscribe a un objeto no listo. Cuando se activa la suscripción, el backend ejecutará un bucle de observación de ese objeto no listo hasta que esté listo. Cuando eso suceda, enviará un mensaje al frontend a través de socketIO (se aceptan sugerencias, no estoy seguro si es el mejor método). Mi pregunta es cómo construir el bucle de observación.

Básicamente, mi frontend se suscribe al backend y recibe un código de respuesta 200 y se conectará al servidor a través de Websocket (socketIO) si se suscribió correctamente, o un código de error 4XX si algo salió mal. En el backend, cuando el usuario se suscribe, debería comenzar para ese usuario un “hilo” (sé que Node.js no admite hilos, es solo para la imagen mental) que consulta una información de una API cada 10 segundos aproximadamente.

Lo hago porque la API a la que hago la consulta no admite WebHooks, así que necesito observar la respuesta de la API hasta que esté en el estado que deseo (esta parte ya la tengo clara).

Lo que estoy preguntando es si hay alguna biblioteca de terceros que realmente esté destinada a ese tipo de tareas. ¿Debería usar hilos de trabajo o simples setTimeouts abstraídos por Clases? La respuesta se enviará a través de SocketIO, esa parte ya la tengo funcionando también, solo que no estoy seguro de cómo construir el método.

También estoy abierto a usar otro lenguaje de programación adecuado que facilite la resolución de este caso. No tengo prisa.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Hay algunas opciones para construir un bucle de observación en Node.js:

    1. Simple setTimeout: Puedes usar una función simple setTimeout para consultar la API cada 10 segundos hasta que se alcance el estado deseado. Este enfoque es relativamente fácil de implementar pero puede que no sea el más eficiente.
    2. Hilos de trabajo: Node.js tiene un módulo incorporado para crear hilos de trabajo que ejecutan tareas intensivas de CPU en hilos separados. Puedes usar este módulo para crear un hilo de trabajo que consulte la API y se comunique de vuelta al hilo principal cuando se alcance el estado deseado. Este enfoque puede mejorar el rendimiento pero puede ser más complejo de implementar.

    3. Bibliotecas de terceros: Hay varias bibliotecas de terceros que pueden ayudar con este tipo de tarea, como Node Schedule, Node Cron y Agenda. Estas bibliotecas proporcionan funciones de programación que se pueden usar para ejecutar tareas en intervalos específicos.

    En cuanto al envío de la respuesta a través de SocketIO, ese enfoque debería funcionar bien. Sin embargo, si estás buscando un lenguaje alternativo que pueda facilitar la resolución de este caso, podrías considerar el uso de Python. Python tiene varias bibliotecas para trabajar con websockets y programar tareas, como asyncio y Celery.

    En última instancia, el mejor enfoque dependerá de los requisitos específicos de tu proyecto y de tu propia experiencia con Node.js y otros lenguajes.

Comments are closed.