Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

227
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda