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

504
Visualizações
Firebase Realtime Database onDisconnect() Coherencia

Tengo un sistema de presencia de base de datos en tiempo real que funciona casi por completo, como se describe aquí , pero tengo algunos problemas. Parece que las personas permanecen en línea incluso después de haberse desconectado hace un tiempo. No estoy seguro de por qué, pero he abierto mis reglas de seguridad a solicitudes no autenticadas temporalmente sin éxito. Podría deberse al error descrito aquí .

Si el problema es la escalera, ¿cuál sería la implementación adecuada de JavaScript para evitar este problema? ¿Es una buena solución recrear el oyente onDisconnect cada 60 minutos? Como referencia, el código que estoy usando se muestra a continuación:

 export function selfPresence(byUpdate) { onValue(ref(rtdb, '.info/connected'), (snap) => { isDBConnected = snap.val(); if (snap.val() === true) { presencecon = push(ref(rtdb, `users/${user.uid}/connections`)); // Create new presence thing. onDisconnect(presencecon).remove(); set(presencecon, true); onDisconnect(ref(rtdb, `users/${user.uid}/lastOnline`)).set(serverTimestamp()); onDisconnect(ref(rtdb, `users/${user.uid}/currentlyListening`)).remove(); } }); }

MI SOLUCIÓN

  • No pude averiguar cómo hacer que RTDB actúe de manera consistente, así que opté por el código a continuación. Básicamente, solo actualiza un valor booleano en una ruta específica de modo que si/cuando el problema SÍ ocurre, la próxima vez que el usuario esté en línea, sobrescribirá la falla con un nuevo oyente en línea.
 onValue(ref(rtdb, '.info/connected'), (snap) => { isDBConnected = snap.val(); if (snap.val()) { onDisconnect(presencecon).set(false); presencecon = ref(rtdb, `users/${user.uid}/online`); isDBConnected = snap.val(); } else { remove(presencecon); } }
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

El siguiente código actualiza un valor booleano en una ruta específica para que, si/cuando el problema SÍ ocurra, la próxima vez que el usuario esté en línea, sobrescribirá la falla con un nuevo oyente en línea.

 onValue(ref(rtdb, '.info/connected'), (snap) => { isDBConnected = snap.val(); if (snap.val()) { onDisconnect(presencecon).set(false); presencecon = ref(rtdb, `users/${user.uid}/online`); isDBConnected = snap.val(); } else { remove(presencecon); } }
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