Как я могу получить событие, когда страница закрыта в Blazor на стороне сервера? - PullRequest
3 голосов
/ 30 января 2020

Я создаю приложение для чата на стороне сервера Blazor.

Я хочу показать состояние каждого пользователя в сети.

Теперь я могу использовать событие OnAfterRenderAsync, чтобы получить пользователь зашел на страницу.

Похоже, что в жизненном цикле блазора нет события exit через https://docs.microsoft.com/en-us/aspnet/core/blazor/lifecycle?view=aspnetcore-3.1

Кто-то сказал, что я могу использовать Dispose событие, чтобы достичь его, пока оно работает вообще.

Более того, у меня есть сумасшедшая идея, что использование window.onbeforeunload события js для вызова метода блейзора.

I понятия не имею, какой из них лучше. Не могли бы вы дать мне предложение? Спасибо.

1 Ответ

4 голосов
/ 30 января 2020

Для этого вам необходимо внедрить CircuitHandler на сервере.

Документацию можно найти здесь https://docs.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.components.server.circuits.circuithandler?view=aspnetcore-3.1

Это позволяет вам реагировать на события жизненного цикла для Circuit, которая является основой соединения с сервером Blazor.

Methods

OnCircuitClosedAsyn c (Circuit, CancellationToken)
Вызывается при отбрасывании нового канала.

OnCircuitOpenedAsyn c (Circuit, CancellationToken)
Вызывается при создании нового канала.

OnConnectionDownAsyn c (Circuit, CancellationToken)
Вызывается при разрыве соединения с клиентом.

OnConnectionUpAsyn c (Circuit, CancellationToken) Вызывается при подключении чтобы клиент был установлен. - Этот метод выполняется один раз первоначально после OnCircuitOpenedAsyn c (Circuit, CancellationToken) и один раз для каждого переподключения в течение срока службы цепи.

...