在blazor服务器端关闭页面时如何获得活动?

时间:2020-01-30 07:19:25

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

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

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

现在,我可以使用OnAfterRenderAsync事件让用户进入该页面。

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

有人说我可以使用Dispose事件来实现它,尽管它确实可以工作。

此外,我有一个疯狂的想法,就是使用js的window.onbeforeunload事件来调用blazor方法。

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

1 个答案:

答案 0 :(得分:6)

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

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

中找到文档

它使您能够对Circuit的生命周期事件做出反应,Circuit是Blazor Server连接的中枢。

方法

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

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

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

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