Estoy usando angular 10 como mi frontend y asp.net core como mi backend. Uso jwt como mi método de autenticación de usuario. El usuario publica su nombre de usuario y contraseña en el lado del servidor y el servidor genera un token que se lo envía al usuario. Y guardo el token en el almacenamiento local del navegador del usuario. He escrito un interceptor http que agrega un portador de autorización a la sección de encabezado de las solicitudes de API del usuario. Esta es la forma en que el servidor sabe quién es quién. Ahora tengo una página en la que debo mostrar usuarios en línea y fuera de línea con puntos verdes y rojos junto a sus nombres. Puedo saber cuándo un usuario inicia sesión porque tiene que iniciar sesión y puedo hacer lo que quiera cuando el usuario inicia sesión, pero no sé cómo informar a mi cliente cuando los usuarios cierran su navegador y abandonan el sitio. Estoy buscando cualquier biblioteca, lógica o cualquier cosa para saber el estado en línea/fuera de línea de mi usuario en tiempo real. Debería mostrar qué usuarios están en línea y cuáles no, y debería ser en tiempo real. Uso el contexto de identidad de Microsoft para manejar la membresía. Cualquier ayuda es apreciada. Gracias. Necesito agregar que quiero una solución en lugar de un código. Solo quiero saber como hacerlo. Puedo manejar el trabajo del código yo mismo. solo quiero saber como?
El uso de una aplicación web para conocer información en vivo sobre las sesiones de otros usuarios requerirá que el servidor publique los datos del otro usuario de alguna manera.
Un enfoque sería usar un marco para manejar la comunicación iniciada por el servidor a través de websockets . Esto requeriría algo como SignalR , para su aplicación ASP.NET Core, para que su servidor impulse los cambios del usuario. El uso de websockets no es difícil, pero viene con una curva de aprendizaje pronunciada y más requisitos de servidor que atender.
Como segundo enfoque, sería extraer periódicamente la información sobre los otros usuarios (alguien lo llamó "solicitud de latido" en los comentarios de la pregunta). En este enfoque, crea un punto final normal en su aplicación y hace que su página de inicio lo llame periódicamente para actualizar la información del usuario. Esto es mucho más simple de implementar que websockets y no agrega requisitos a su infraestructura actual.
La diferencia en los enfoques es qué tan cerca se llega al tiempo real y el esfuerzo para implementarlo.