Estoy recuperando datos de una API de reserva donde la disponibilidad de habitaciones cambia cada vez. Lo que estoy haciendo es recuperar los datos cada 1 segundo usando setInterval.
const interval = setInterval(getData, 1000);que funciona bien, pero pensé que sería mejor si hubiera una forma de recuperar solo si hubiera una actualización o un cambio en la API de datos que estaba recuperando. He buscado por todos lados pero no encuentro nada sobre esto.
Para el lado del servidor, digamos que obtengo datos de https://api.publicapis.org/entries usando Express y realizo algunos cambios en los datos y ahora mis datos están disponibles en https://localhost:3001/api/entries y yo consumirlo y mostrar lo que quiero usando React.
Digamos que https://api.publicapis.org/entries cambia sus datos cada vez, ¿cómo puedo recuperar cuando solo cambian los datos, para que en https://localhost:3001/api/entries los datos cambien en consecuencia?
Le recomiendo que use el mecanismo QueryCache de React Query ( https://react-query.tanstack.com/reference/QueryCache#_top ), es una característica muy poderosa porque, de manera predeterminada, cada resultado de la consulta se almacena en caché durante cinco minutos y depende de ese caché. para solicitudes posteriores.
React query sabe que los datos del servidor pueden haberse actualizado y es posible que la memoria caché no contenga los datos más recientes, por lo que se activa una recuperación en segundo plano para la misma consulta y, si la recuperación es exitosa, los nuevos datos se actualizan en la interfaz de usuario. Dado que nuestros datos son los mismos que los datos almacenados en caché, no vemos ningún cambio en la interfaz de usuario...
Creo que puede hacer algo tanto desde el lado del servidor como desde el lado del cliente, desde el lado del cliente, use setTimeout en lugar de setInterval, que puede permitirle enviar la siguiente solicitud solo si obtiene la última respuesta, por ejemplo:
let timeout function getData() { // await request here.. timeout = setTimeout(getData, 1000) }y luego, consulte nuevos datos con los últimos datos de actualización en el servidor, de modo que el lado del servidor pueda saber si es necesario enviarle algún dato de actualización. Si desea que el servidor le notifique cuándo debe obtener la actualización, creo que debe usar sockets.