This package provides Blazor applications with access to an improved version of the browser's Online State API
-
In your Blazor app, add the
BlazorOnlineState
NuGet packagedotnet add package BlazorOnlineState
-
In your Blazor app's
Startup.cs
(Server) orProgram.cs
(Client), register the 'OnlineStateService'.-
... using BlazorOnlineState; ... public void ConfigureServices(IServiceCollection services) { ... services.AddSingleton<OnlineStateServer>(); ... }
-
... using BlazorOnlineState; ... public static async Task Main(string[] args) { ... builder.Services.AddSingleton<OnlineStateService>(); ... }
-
-
Include the following javascript code into index.html inside www-root folder
window.addEventListener("online", async () => { const req = await fetch("https://icanhazip.com/"); if (req.ok) { DotNet.invokeMethodAsync("BlazorOnlineState", "OnOnline"); } }); window.addEventListener("offline", () => { DotNet.invokeMethodAsync("BlazorOnlineState", "OnOffline"); }); window.IsOnline = async () => { if (window.navigator.onLine) { const req = await fetch("https://icanhazip.com/"); return req.ok; } return window.navigator.onLine; };
-
Now you can inject the OnlineService into any Blazor page!
Vasco Sousa