69 lines
1.9 KiB
C#
69 lines
1.9 KiB
C#
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<string, string>("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);
|
|
}
|
|
}
|
|
}
|
|
}
|