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

时间:2019-12-12 16:21:40

标签: signalr asp.net-core-signalr blazor-server-side

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

我正在尝试建立一个简单的多用户矢量绘图应用程序,该应用程序允许多个用户在同一画布上创建形状。

形状和参数等都存储在数据库中,并且有很多画布。

我的问题是,考虑到两个(或更多)用户正在查看同一画布,如何在其他用户创建新形状时保持状态最新?如何检测其他用户正在查看或编辑同一画布?

TIA。

2 个答案:

答案 0 :(得分:3)

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

对于形状,您可以使用类似的想法-让处理形状的服务通知Singleton服务,该服务随后可以向该页面的所有订阅者(由NavigationManager包装器确定的用户)引发事件。 / p>

答案 1 :(得分:1)

服务器端Blazor实际上是基于SignalR构建的。理想的是利用SignalR来进行实时的多用户形状绘制。

有关SignalR的更多信息 https://docs.microsoft.com/en-us/aspnet/core/signalr/introduction?view=aspnetcore-3.1

本质上,您可以创建一个Hub,它可以与一个或多个Clients通话。客户将向集线器发送消息到画布上的draw(),然后可以将绘制事件广播给集线器上的所有客户端。