private async Task StartPeriodicallyCheck()
        {
            IsPeriodicalCheckRunning = true;

            await Task.Delay(TimeSpan.FromSeconds(20));

            foreach (var activeUser in _webSocketRepository.GetAllActiveUsers())
            {
                var user = Guid.Parse(activeUser.Key);

                try
                {
                    //sending ping
                    await WriteAsBinaryToWebSocketAsync(
                        bytes : new byte[0],
                        webSocket : activeUser.Value,
                        type : WebSocketMessageType.Binary);
                }
                catch (Exception)
                {
                    _webSocketRepository.RemoveUser(user);
                    _onlineUserRepository.RemoveUser(user);
                }
            }

            StartPeriodicallyCheck();
        }
Example #2
0
 public IActionResult Index()
 {
     return(View((_webSocketRepository.GetAllActiveUsers(), _debugRepository.Errors, _onlineUserRepository.FilePiecesInUsersOnline, _onlineUserRepository.UsersInNetworksOnline)));
     //return Json((ActiveUsers: _webSocketRepository.GetAllActiveUsers(), Errors: _debugRepository.Errors));
 }