如何在 Blazor 服务器端更新多个用户?

How do I update multiple users on Blazor Server-Side?

假设我想要一个 UI 组中的用户具有同步视图。想象一个群组聊天应用程序,群组中的每个人都应该看到完全相同的消息。

当用户向群组发布消息时,整个群组都需要接收它。

对于 JS,我可能会使用 SignalR Groups,并让前端生成一个带有消息发布的 SignalR 事件。服务器端集线器然后将该消息发送到组。

在服务器端 Blazor 上,由于所有用户的状态都已在服务器上,我将如何协调更新 Blazor 上的 UI 用户组?

我正在尝试实现类似的目标。一段时间后,我发现了一种方法。 Kyle 的回答帮我弄明白了。

您必须创建一个 class,让我们调用 Messenger,它有一个 Action 属性,以及一个在调用后调用此 Action 的方法

public Action OnMessage { get; set; }
public void AddMessage(string message)
{
  Text = message;
  OnMessage?.Invoke();
}

在剃须刀组件中,注入 Messenger。此外,您应该为 OnMessage 属性 设置一个事件,然后调用 StateHasChanged 以告知视图它可以更新

@inject Messenger messenger
// rest of component here, and then the code block 
protected override async Task OnInitializedAsync()
{
  messenger.OnMessage += () =>
  {
    // do something with the messenger.Text here
    InvokeAsync(this.StateHasChanged);
  };
}

不要忘记,在您的 Startup class 上,将 class Messenger 添加为 Singleton,以便它可用于注入

services.AddSingleton<Messenger>();

我希望这就是您想要实现的目标,并且它也可以帮助到其他人。 干杯。