Soy muy novato, intento hacer una cuenta regresiva para recargar la página cada 15 minutos para todos los usuarios de mi sitio web. En realidad funciona, pero solo para el lado del cliente, no sé cómo hacerlo para que sea "lado del servidor"
Como la misma cuenta regresiva para todos en el sitio web.
¿Tal vez necesite tomar la fecha del lado de los servidores? pero idk wow para hacer eso.
import Countdown from "react-countdown"; import { useState, useEffect } from "react"; const twoDigits = (num) => String(num).padStart(2, '0') // Renderer callback with condition const renderer = ({ minutes, seconds, completed }) => { if (completed) { // Render a complete state return (window.location.reload(), []); } else { // Render a countdown return ( <span> {twoDigits(minutes)}:{twoDigits(seconds)} </span> ); } }; const getLocalStorageValue = (s) => localStorage.getItem(s); function RebaseCountdown() { const [data, setData] = useState( { date: Date.now(), delay: 900000, } ); const wantedDelay = 900000; useEffect(() => { const savedDate = getLocalStorageValue("end_date"); if (savedDate != null && !isNaN(savedDate)) { const currentTime = Date.now(); const delta = parseInt(savedDate, 10) - currentTime; //Do you reach the end? if (delta > wantedDelay) { //Yes we clear our saved end date if (localStorage.getItem("end_date").length > 0) localStorage.removeItem("end_date"); } else { //No update the end date with the current date setData({ date: currentTime, delay: delta }); } } }, []); return ( <div> <Countdown date={data.date + data.delay} renderer={renderer} intervalDelay={3} autoStart={true} onStart={(delta) => { //Save the end date if (localStorage.getItem("end_date") == null) localStorage.setItem( "end_date", JSON.stringify(data.date + data.delay) ); }} onComplete={() => { if (localStorage.getItem("end_date") != null) localStorage.removeItem("end_date"); }} /> </div> ) } export default RebaseCountdown