如何在 blazor 服务器端关闭页面时获取事件?

Mel*_* NG 8 .net-core asp.net-core blazor blazor-server-side

我正在 blazor 服务器端制作一个聊天室应用程序。

我想显示每个用户的在线状态。

现在我可以使用该OnAfterRenderAsync事件来获取用户已进入该页面。

exit通过https://docs.microsoft.com/en-us/aspnet/core/blazor/lifecycle?view=aspnetcore-3.1在 blazor 生命周期中似乎没有任何事件

有人说我可以使用该Dispose事件来实现它,而它确实有效。

更重要的是,我有一个疯狂的想法,即使用 window.onbeforeunloadjs事件来调用blazor方法。

我不知道哪一个最好。你能给我一个建议吗?谢谢你。

Mis*_*goo 8

为此,您应该在服务器上实现一个CircuitHandler

您可以在此处找到文档https://docs.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.components.server.circuits.circuithandler?view=aspnetcore-3.1

它使您能够对 Circuit 的生命周期事件做出反应,这是 Blazor 服务器连接的主干。

方法

OnCircuitClosedAsync (Circuit, CancellationToken)
在丢弃新电路时调用。

OnCircuitOpenedAsync (Circuit, CancellationToken)
在建立新电路时调用。

OnConnectionDownAsync (Circuit, CancellationToken)
在与客户端的连接断开时调用。

OnConnectionUpAsync (Circuit, CancellationToken) 在建立到客户端的连接时调用。- 此方法最初在 OnCircuitOpenedAsync(Circuit, CancellationToken) 之后执行一次,并且在电路生命周期内每次重新连接时执行一次。

  • 我还在这里找到了一个示例项目:https://github.com/nagytam/BlazorCircuitHandler。我尝试了示例项目,它正是我所需要的。 (2认同)