我是Blazor的新手,我正在尝试通过.NET Core 3.0使用服务器端模型。
我正在尝试建立一个简单的多用户矢量绘图应用程序,该应用程序允许多个用户在同一画布上创建形状。
形状和参数等都存储在数据库中,并且有很多画布。
我的问题是,考虑到两个(或更多)用户正在查看同一画布,如何在其他用户创建新形状时保持状态最新?如何检测其他用户正在查看或编辑同一画布?
TIA。
答案 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()
,然后可以将绘制事件广播给集线器上的所有客户端。