Non posso parlare di come SE lo fa sebbene dal momento che si tratta di un sito Web ci sono diversi modi in cui potrebbero includere un job cron impostato per eseguire uno script php / asp / what-have-you all'ora per spingere i dati . Ma questo sarebbe se steste cercando una soluzione solo web.
Ma dal momento che stai citando un client potresti forse creare un file con la data / ora dell'ultimo aggiornamento di notizie a quel client e chiedere al client di controllare il valore memorizzato in tale file e confrontarlo con il tempo di sistema dell'utente per vedere se è trascorsa un'ora dall'ultimo aggiornamento. Se è trascorso almeno un'ora, il client richiede al flusso di notizie l'ultimo flusso di notizie dal tuo server, che poi restituisce il flusso di notizie più recente al client.
Eviterei di usare un timer o almeno di usare un timer solo perché quel metodo funzionerebbe solo se l'utente tiene aperto il client per mantenere attivo il timer. Ma se hai (anche) il file come suggerito, puoi creare una subroutine per aprire il file, memorizzare il tempo in una variabile e confrontarlo con l'ora del sistema ed effettuare la richiesta se è stata almeno un'ora. Quindi devi semplicemente effettuare chiamate al sub in relazione a determinati eventi. Definitivamente lo chiamerei su caricamento del modulo perché se l'utente sta solo riavviando il proprio client, allora vorrebbe le ultime notizie. Se fossero passati alcuni giorni da quando erano sul client, mostrerebbero le notizie così vecchie. Nel minor legame che subisce al cliente, carica e avvia il timer come hai suggerito. Teoricamente finché l'utente mantiene aperto il client, il timer continuerà a fare le sue cose e quindi si avrà il sottoprocesso a carico per quando non c'è un timer attivo per tenere traccia dei tempi.
Chiedo scusa se ho frainteso quello che stavi cercando dato che non sono completamente sicuro di quello che stai cercando. Ma spero comunque che ci sia qualcosa di valore qui per te!