@page "/" @using Microsoft.AspNetCore.SignalR.Client @inject NavigationManager NavManager @implements IAsyncDisposable

@code { private HubConnection? hubConnection; private List messages = new(); private string? userInput; private string? messageInput; protected override async Task OnInitializedAsync() { hubConnection = new HubConnectionBuilder() .WithUrl(NavManager.ToAbsoluteUri("/chathub")) .WithAutomaticReconnect() .Build(); hubConnection.On("RecieveMessage", (user, message) => { var formatedMessage = $"{user}: {message}"; messages.Add(formatedMessage); InvokeAsync(StateHasChanged); }); await hubConnection.StartAsync(); } private async Task Send() { if (hubConnection != null) { await hubConnection.SendAsync("SendMessage", userInput, messageInput); } } public bool IsConnected => hubConnection?.State == HubConnectionState.Connected; public async ValueTask DisposeAsync() { if (hubConnection != null) { await hubConnection.DisposeAsync(); } } }