← Каталог
SignalR - реализация реального времени в .NET — Вариант A — Использование `HubConnection` напрямую
Фрагмент из «SignalR - реализация реального времени в .NET»: Вариант A — Использование `HubConnection` напрямую.
@page "/chat"
@using Microsoft.AspNetCore.SignalR.Client
<ul>
@foreach (var msg in messages) { <li>@msg</li> }
</ul>
@code {
private HubConnection? connection;
private List<string> messages = new();
protected override async Task OnInitializedAsync()
{
connection = new HubConnectionBuilder()
.WithUrl(NavigationManager.ToAbsoluteUri("/chathub"))
.Build();
connection.On<string, string>("ReceiveMessage", (user, message) =>
{
messages.Add($"{user}: {message}");
InvokeAsync(StateHasChanged);
});
await connection.StartAsync();
}
public async ValueTask DisposeAsync()
{
if (connection is not null)
{
await connection.DisposeAsync();
}
}
} @page "/chat"
@using Microsoft.AspNetCore.SignalR.Client
<ul>
@foreach (var msg in messages) { <li>@msg</li> }
</ul>
@code {
private HubConnection? connection;
private List<string> messages = new();
protected override async Task OnInitializedAsync()
{
connection = new HubConnectionBuilder()
.WithUrl(NavigationManager.ToAbsoluteUri("/chathub"))
.Build();
connection.On<string, string>("ReceiveMessage", (user, message) =>
{
messages.Add($"{user}: {message}");
InvokeAsync(StateHasChanged);
});
await connection.StartAsync();
}
public async ValueTask DisposeAsync()
{
if (connection is not null)
{
await connection.DisposeAsync();
}
}
}