Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

228
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda