Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

224
Views
Fiabilidad de las conexiones simultáneas de Firebase Realtime Database

Cuento las conexiones concurrentes de la siguiente manera:

 onValue(ref(db, '.info/connected'), snapshot => { if (snapshot.val()) { let con = push(ref(db, 'concurrent'), { connected: moment().format('DD/MM/YYYY HH:mm') }) onDisconnect(con).remove() } })

Sin embargo, cuando reviso la base de datos, veo conexiones de hace varios días:

ingrese la descripción de la imagen aquí

¿Significa eso que los usuarios han tenido pestañas inactivas en el navegador desde hace varios días? ¿Estoy haciendo algo mal? ¿Es la función onDisconnect() 100% confiable?

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

base de fuego aquí

¿Tiene reglas de seguridad en la ruta concurrent que requieran que el usuario sea autenticado por casualidad? Porque hay un problema abierto en torno a eso, que ha estado causando problemas a más personas recientemente.

Aparte de eso, no hemos visto problemas de confiabilidad en el manejo de onDisconnect recientemente, por lo que necesitaríamos ver más información sobre las conexiones persistentes (una reproducción independiente sería buena).

about 4 years ago · Juan Pablo Isaza Report

0

Al leer el problema , parece que si la pestaña está inactiva durante más de una hora, el token caduca. Si la pestaña vuelve a estar activa, el cliente de Firebase se vuelve a conectar y obtiene un token nuevo.

Para eliminar la ruta en caso de vencimiento del token (pestaña inactiva):

 const onIdleTabGoOffline = (ms) => { let timer document.addEventListener('visibilitychange', () => { if(document.hidden){ timer = setTimeout(() => goOffline(db), ms) } else{ clearTimeout(timer) goOnline(db) } }) }

Finalmente:

 onValue(ref(db, '.info/connected'), snapshot => { if (snapshot.val()) { let con = push(ref(db, 'concurrent'), { connected: moment().format('DD/MM/YYYY HH:mm') }) onDisconnect(con).remove() onIdleTabGoOffline(59 * 60 * 1000) } })
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!