Ascoltare le modifiche in tempo reale
Renda la sua app realmente dinamica sottoscrivendosi agli eventi del Realtime Database, reagendo alle modifiche dei valori e dei nodi figlio man mano che avvengono e rimuovendo gli listener per evitare perdite di memoria.
Ascoltare le modifiche in tempo reale è una lezione Firebase Auth & Realtime Database Apps gratuita su CoddyKit. Questa è la lezione 4 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Firebase Auth & Realtime Database Apps, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Firebase Auth & Realtime Database Apps include 4 lezioni in totale.
Parti di questa lezione non sono ancora state tradotte e vengono mostrate in inglese.
From Fetch to Stream
Reading data once gives you a snapshot. The power of Realtime Database is live updates: your app reacts the instant data changes on the server, with no polling.
This is done by attaching listeners to a location in the database.
The Value Event
The most common listener is value. It fires once immediately with current data, then again every time anything under that location changes.
import { getDatabase, ref, onValue } from 'firebase/database';
const db = getDatabase();
onValue(ref(db, 'scores/global'), (snapshot) => {
console.log('New value:', snapshot.val());
});Reading the Snapshot
The callback receives a DataSnapshot. Use .val() for the data, .exists() to check presence, and .key for the node name.
onValue(ref(db, 'user/42'), (snap) => {
if (snap.exists()) {
console.log(snap.key, snap.val());
}
});Child Events
For lists, value events resend the whole node on every change. Child events are more efficient, firing per item:
onChildAddedonChildChangedonChildRemoved
Using onChildAdded
onChildAdded fires once for each existing child, then for every new one. It is perfect for chat messages or feeds.
import { onChildAdded } from 'firebase/database';
onChildAdded(ref(db, 'messages'), (snap) => {
appendMessage(snap.key, snap.val());
});Reacting to Changes and Removals
Pair additions with change and removal handlers to keep your UI in sync without re-rendering everything.
import { onChildChanged, onChildRemoved } from 'firebase/database';
onChildChanged(ref(db, 'messages'), s => updateMessage(s.key, s.val()));
onChildRemoved(ref(db, 'messages'), s => removeMessage(s.key));Reading Once
Sometimes you want current data without an ongoing subscription. Use get for a one-time read instead of a listener.
import { get } from 'firebase/database';
const snap = await get(ref(db, 'config'));
console.log(snap.val());Detaching Listeners
Listeners stay active until removed, consuming bandwidth and memory. Always detach them when a screen unmounts, using the unsubscribe function returned by onValue.
const unsubscribe = onValue(ref(db, 'scores'), cb);
// later, when leaving the screen:
unsubscribe();Handling Errors
Listeners can fail, often due to Security Rules denying read access. Provide an error callback so failures are visible, not silent.
onValue(ref(db, 'private'), (snap) => render(snap), (error) => {
console.error('Read failed:', error.message);
});Performance Tips
Keep listeners efficient:
- Listen at the smallest path that has the data you need
- Prefer child events for large lists
- Never attach a value listener to the database root
A Live Counter Example
Putting it together: attach a value listener to a counter node, update the DOM in the callback, and unsubscribe on cleanup. The number changes for every connected client in real time.
const unsub = onValue(ref(db, 'visitors/count'), (snap) => {
document.getElementById('count').textContent = snap.val() ?? 0;
});Quick Check
Test your understanding of realtime listeners.
Recap
Your app can now respond to data the moment it changes.
- Use
onValuefor single nodes - Use child events for efficient lists
- Read once with
getwhen no subscription is needed - Always detach listeners and handle errors
- Listen at the narrowest useful path
Domande Frequenti
La lezione «Ascoltare le modifiche in tempo reale» è gratuita?
Sì — il testo completo di «Ascoltare le modifiche in tempo reale» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Firebase Auth & Realtime Database Apps, passa a CoddyKit PRO. Il corso Firebase Auth & Realtime Database Apps include 4 lezioni in totale.
Cosa imparerò in «Ascoltare le modifiche in tempo reale»?
Renda la sua app realmente dinamica sottoscrivendosi agli eventi del Realtime Database, reagendo alle modifiche dei valori e dei nodi figlio man mano che avvengono e rimuovendo gli listener per evita… Eserciti Firebase Auth & Realtime Database Apps con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Firebase Auth & Realtime Database Apps?
Non è richiesta alcuna esperienza precedente. Firebase Auth & Realtime Database Apps su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.
Quanto tempo richiede la lezione «Ascoltare le modifiche in tempo reale»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Firebase Auth & Realtime Database Apps?
Sì. Ogni lezione Firebase Auth & Realtime Database Apps include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Fondamenti del Realtime Database
- Lettura e scrittura dei dati
- Strutturazione dei dati
- Ascoltare le modifiche in tempo reale