gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 16:12:10 25 4
gpt4 key购买 nike

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

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

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

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

最佳答案

我试图实现类似的目标。一段时间后,我发现了一种方法。凯尔的回答帮助我弄清楚了。

你必须创建一个类,让我们调用 信使 ,它有一个 Action 属性,以及一个调用此 Action 的方法

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

在 razor 组件中,注入(inject) Messenger。此外,您应该为 OnMessage 属性设置一个事件,然后调用 StateHasChanged 以告诉 View 它可以更新
@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 类中,将 Messenger 类添加为 Singleton 以使其可用于注入(inject)
services.AddSingleton<Messenger>();

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

关于signalr - 如何在 Blazor 服务器端更新多个用户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59696970/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com