多个用户访问服务器端 Blazor 中的相同状态

Multiple users access to the same state in serverside Blazor

我是 Blazor 的新手,我正在尝试通过 .NET Core 3.0 使用服务器端模型。

我正在尝试设置一个简单的多用户矢量绘图应用程序,它允许多个用户在同一个 canvas 上创建形状。

形状参数等都存入数据库,有很多canvas个

我的问题是,鉴于两个(或更多)用户正在查看相同的 canvas,如何在其他用户创建新形状时保持状态最新?我如何检测哪些其他用户正在查看或编辑相同的 canvas?

TIA。

服务器端 Blazor 实际上构建于 SignalR 之上。最好利用 SignalR 进行实时的多用户形状绘制。

More about SignalR https://docs.microsoft.com/en-us/aspnet/core/signalr/introduction?view=aspnetcore-3.1

基本上,您可以创建一个可以与一个或多个 Clients 对话的 Hub。客户端会将消息发送到集线器 canvas 上的 draw(),然后可以将该绘制事件广播到集线器上的所有客户端。

您可以通过将 NavigationManager 包装在 Singleton 服务中来跟踪所有用户的位置。

对于形状,您可以使用类似的想法 - 让您操作形状的服务通知单例服务,然后该服务可以向该页面的所有订阅者(由您的 NavigationManager 包装器确定的用户)引发事件.