public async Task Invoke( HttpContext context, IDeviceResolver deviceResolver, IBrowserResolver browserResolver, IClientRepository clientRepository) { if (!deviceResolver.Device.Crawler) { Parser uaParser = Parser.GetDefault(); ClientInfo clientInfo = null; Guid clientId = Guid.Empty; Guid sessionId = Guid.Empty; var cookieId = context.Request.Cookies[_key]; var isExistingUser = context.Request.Cookies.ContainsKey(_key); if (!isExistingUser || !Guid.TryParse(cookieId, out clientId) || clientRepository.Get(clientId) is null) { clientId = Guid.NewGuid(); var userAgent = deviceResolver.UserAgent.ToString(); if (clientInfo is null) { clientInfo = uaParser.Parse(userAgent); } context.Response.Cookies.Append(_key, clientId.ToString()); var newClient = new DAL.Entities.Client() { ClientId = clientId, Ip = context.Connection.RemoteIpAddress.ToString(), Device = deviceResolver.Device.Type.ToString(), Browser = browserResolver.Browser.Type.ToString(), BrowserVersion = browserResolver.Browser.Version.ToString(), Platform = clientInfo.OS.Family, PlatformVersion = clientInfo.OS.Major, }; clientRepository.Add(newClient); } if (clientInfo is null) { clientInfo = uaParser.Parse(deviceResolver.UserAgent.ToString()); } var onlineClient = new OnlineClientViewModel() { ClientId = clientId, Ip = context.Connection.RemoteIpAddress.ToString(), UserAgent = $"Device: {deviceResolver.Device.Type.ToString()}, OS: {clientInfo.OS.Family} - {clientInfo.OS.Major}, Browser: {browserResolver.Browser.Type.ToString()} - {browserResolver.Browser.Version.ToString()}", LastActivity = DateTime.Now }; OnlineClients.AddOrUpdate(clientId.ToString(), onlineClient, (key, value) => { value.LastActivity = DateTime.Now; return(value); }); } foreach (var item in OnlineClients) { if ((DateTime.Now - item.Value.LastActivity).Seconds >= _timeout) { OnlineClients.Remove(item.Key, out OnlineClientViewModel deletedUser); } } await _next(context); }
private void btn_Sign_In_Click(object sender, RoutedEventArgs e) { _currentСlient = _common.SignIn(txt_NickName.Text, txt_Password.Text); if (_currentСlient != null) { this.Close(); } txt_NickName.Text = String.Empty; txt_Password.Text = String.Empty; }
public MainWindow() { ModalWindow modalWindow = new ModalWindow(); modalWindow.ShowDialog(); _currentСlient = ModalWindow._currentСlient; if (_currentСlient == null) { System.Windows.Application.Current.Shutdown(); } else { InitializeComponent(); _common = new BLL.Common(); Conversations = new ObservableCollection <ConversationModel>(); Messages = new ObservableCollection <MessageEventArgsModel>(); _clientTcp = new TcpClientConnection(); _clientTcp.OnMessage += SetMessage; _clientTcp.SentStartMessage += SentStartMessage; UpdateСlientData(); _clientTcp.StartTcpClient(_portNumber); } }