using System; using System.Threading.Tasks; using System.Windows; using Microsoft.AspNetCore.SignalR.Client; /// Gefunden in: /// https://learn.microsoft.com/en-us/aspnet/core/signalr/dotnet-client?view=aspnetcore-9.0&tabs=visual-studio /// Da ist auch beschrieben, wie ein automatischer Reconnect gemacht wird namespace SignalRTest2 { public partial class Form1 : Form { HubConnection connection; public Form1() { InitializeComponent(); connection = new HubConnectionBuilder() .WithUrl("https://localhost:7297/chathub") // .WithAutomaticReconnect() .Build(); connection.Closed += async (error) => { await Task.Delay(new Random().Next(0, 5) * 1000); await connection.StartAsync(); }; } private async void connectButton_Click(object sender, EventArgs e) { connection.On("ReceiveMessage", (user, message) => { this.Invoke(() => { var newMessage = $"{user}: {message}"; messagesList.Items.Add(newMessage); }); }); try { await connection.StartAsync(); messagesList.Items.Add("Connection started"); connectButton.Enabled = false; sendButton.Enabled = true; } catch (Exception ex) { messagesList.Items.Add(ex.Message); } } private async void sendButton_Click(object sender, EventArgs e) { try { await connection.InvokeAsync("SendMessage", userTextBox.Text, messageTextBox.Text); } catch (Exception ex) { messagesList.Items.Add(ex.Message); } } } }