@implements IDisposable @inject ServerStatusMonitor Monitor @if (Monitor.Current is { } status) { @status.ActiveConnections/@status.MaxConnections connections @if (status.QueuedClients > 0) { ยท @status.QueuedClients queued } } @code { protected override void OnInitialized() { Monitor.Changed += OnMonitorChanged; Monitor.EnsureStarted(); } public void Dispose() => Monitor.Changed -= OnMonitorChanged; private void OnMonitorChanged() => _ = InvokeAsync(StateHasChanged); private static string LoadClass(ServerStatus status) => status.ActiveConnections >= status.MaxConnections ? "is-full" : status.ActiveConnections * 5 >= status.MaxConnections * 4 ? "is-high" : "is-ok"; private static string Describe(ServerStatus status) => $"{status.ActiveConnections} of {status.MaxConnections} connections in use" + (status.QueuedClients > 0 ? $", {status.QueuedClients} waiting in the queue" : null); }