Estoy tratando de configurar algo en mi aplicación para poder detectar si dos usuarios están editando el mismo documento al mismo tiempo. La mejor forma en que se me ocurrió hacer esto fue enviando información al backend cuando un usuario inicia y cierra sesión, y verificando eso cuando quiero ver si dos usuarios están activos al mismo tiempo. Iniciar la aplicación es fácil de detectar con useEffect, pero tengo problemas para encontrar una manera de hacerlo de manera limpia.
Observé onunload y onbeforeunload, pero no parecen tener compatibilidad universal con el navegador, y preferiría no interrumpir la experiencia del usuario con una ventana emergente. Estaba pensando en verificar la inactividad, pero si hay un método más limpio, como algo con Google Cloud Platform, sería útil. ¡Gracias!
Eso suena como un gran caso de uso para onDisconnect . Puedes leer más al respecto aquí y aquí .
Este sería un ejemplo sencillo:
var ref = firebase.database().ref("onlineState"); ref.onDisconnect().set(false);Lo que sucede aquí es que este comando se envía a Firebase y vive allí. Cuando pierda la conexión con Firebase, se ejecutará. No importa si se hace cerrando el navegador/pestaña, etc...
Si necesita una ejecución de código más compleja, adjunte un activador de función de nube de firebase a esos cambios. Es importante saber que no puede ejecutar el código del lado del cliente en ese evento.