public async Task <IActionResult> Online() { var jwtSecurityToken = _httpContextAccessor.HttpContext.Request.GetJwtToken(); var fullName = jwtSecurityToken.GetFullName(); var avatar = jwtSecurityToken.GetAvatar(); var onlineUser = new OnlineUser { UserName = _httpContextAccessor.HttpContext.User.Identity.Name, FullName = fullName, Avatar = avatar, IsOnline = true }; onlineUser.Load(); // Persist Online user await _chatUserRepository.UpsertAsync(new Chat.Entities.ChatUser { UserName = onlineUser.UserName, Avatar = onlineUser.Avatar, FullName = onlineUser.FullName }); await _chatContext.TakeOnlineAsync(onlineUser); // Boardcast all online users await _hubChatContext.Clients.All.Online(onlineUser); return(Ok(onlineUser)); }