private async void ConnectButton_Click(object sender, RoutedEventArgs e) { connectButton.IsEnabled = false; var email = emailTextBox.Text; var password = passwordBox.Password; if (string.IsNullOrWhiteSpace(email) || string.IsNullOrWhiteSpace(password)) { messagesList.Items.Add("Email or Password are blank."); return; } _connection = new HubConnectionBuilder() .WithUrl($"{_settings.BaseAddress}ChatHub?ClientType=PC", options => { options.AccessTokenProvider = async() => { var tokenUserCommand = new TokenUserCommand { Email = emailTextBox.Text, Password = passwordBox.Password }; var token = await RestService.PostAsync <string>("account/token", tokenUserCommand); return(token); }; }) .Build(); _connection.Closed += async(error) => { await Task.Delay(new Random().Next(0, 5) * 1000); await _connection.StartAsync(); }; _ = _connection.On <string>("ReceiveChatMessage", (userAndMessage) => { Dispatcher.Invoke(() => { var newMessage = userAndMessage; messagesList.Items.Add(newMessage); }); }); _connection.On <string>("SendLargeDataAsync", (user) => { _ = Dispatcher.Invoke(async() => { try { // Get large json from https://next.json-generator.com var currentDirectory = Directory.GetCurrentDirectory(); //var jsonData = await File.ReadAllTextAsync(currentDirectory + "\\..\\..\\..\\test25.json"); var jsonData = await File.ReadAllTextAsync(currentDirectory + "\\..\\..\\..\\test100.json"); var numberOfBytes = Encoding.Default.GetByteCount(jsonData); var newMessage = $"Sending large data to User:{user}, Bytes: {numberOfBytes}"; messagesList.Items.Add(newMessage); var submitLargeDataCommand = new SubmitLargeDataCommand { User = user, JsonData = jsonData }; await RestService.PostAsync("LargeData/SubmitLargeData", submitLargeDataCommand); } catch (Exception ex) { var message = ex.Message; throw; } }); }); try { await _connection.StartAsync(); messagesList.Items.Add("Connection started"); sendButton.IsEnabled = true; } catch (Exception ex) { messagesList.Items.Add(ex.Message); connectButton.IsEnabled = true; } }
public async Task SubmitLargeDataAsync([FromBody] SubmitLargeDataCommand submitLargeDataCommand) { await _hubContext.Clients.User(submitLargeDataCommand.User).SendAsync("UpdateLargeData", submitLargeDataCommand.JsonData); }