Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I get the event while page close in blazor server-side?

I am making a chatroom App by the blazor server-side.

I want to show the online state of each user.

Now I can use the OnAfterRenderAsync event to get a user has entered the page.

It seems there is not any exit event in blazor lifecycle via https://learn.microsoft.com/en-us/aspnet/core/blazor/lifecycle?view=aspnetcore-3.1

Someone said I can use the Dispose event to achieve it while it does work at all.

What's more, I have a crazy idea that using the window.onbeforeunload event of js to invoke the blazor method.

I have no idea which one is best. Would you please give me a suggestion? Thank you.

like image 717
Melon NG Avatar asked Jan 30 '20 07:01

Melon NG


People also ask

How do you use callback Blazor event?

In a new Blazor app, edit the /Pages/Counter. razor file and add a new callback parameter. This declares a new EventCallback named OnMultipleOfThree that any consuming component can register an interest in. The <int> specifies that the value emitted by the event callback will be a System.

How do I get the current page in Blazor?

Inject NavigationManager in razor. Use Uri from NavigationManager to get the current URL.

How do you use onclick in Blazor?

Adding a button onclick event The first thing we need to is to create a NewComment property. This will store the textarea value. We then need to bind our NewComment property to the textarea value. We do that by using the @bind attribute.


1 Answers

You should implement a CircuitHandler on the server for this.

You can find the documentation here https://learn.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.components.server.circuits.circuithandler?view=aspnetcore-3.1

It enables you to react to lifecycle events for the Circuit, which is the backbone of a Blazor Server connection.

Methods

OnCircuitClosedAsync(Circuit, CancellationToken)
Invoked when a new circuit is being discarded.

OnCircuitOpenedAsync(Circuit, CancellationToken)
Invoked when a new circuit was established.

OnConnectionDownAsync(Circuit, CancellationToken)
Invoked when a connection to the client was dropped.

OnConnectionUpAsync(Circuit, CancellationToken) Invoked when a connection to the client was established. - This method is executed once initially after OnCircuitOpenedAsync(Circuit, CancellationToken) and once each for each reconnect during the lifetime of a circuit.

like image 54
Mister Magoo Avatar answered Oct 24 '22 12:10

Mister Magoo