FruitBankHybridApp/FruitBankHybrid.Shared/Pages/Chat.razor

47 lines
1.1 KiB
Plaintext

@page "/chat"
@using FruitBankHybrid.Shared.Services
@inject ISignalRService SignalR
<h3>AI Chat</h3>
<input @bind="userName" placeholder="Your name" />
<input @bind="message" placeholder="Type message..." />
<button @onclick="Send">Send</button>
<ul>
@foreach (var m in messages)
{
<li><b>@m.User:</b> @m.Text</li>
}
</ul>
@code {
private string userName = "BlazorClient";
private string message;
private List<(string User, string Text)> messages = new();
protected override async Task OnInitializedAsync()
{
SignalR.MessageReceived += OnMessageReceived;
await SignalR.InitializeAsync();
}
private void OnMessageReceived(string user, string text)
{
messages.Add((user, text));
InvokeAsync(StateHasChanged);
}
private async Task Send()
{
await SignalR.SendMessageAsync(userName, message);
message = string.Empty;
}
public async ValueTask DisposeAsync()
{
SignalR.MessageReceived -= OnMessageReceived;
await SignalR.DisposeAsync();
}
}