A lightweight Angular library to detect actual internet connectivity by pinging a backend endpoint — not just relying on navigator.onLine
.
-
navigator.onLine
is unreliable — it only checks local connection, not real internet access. - This library actively pings a backend server to verify actual connectivity.
- Exposes a clean RxJS Observable (
isOnline$
) to subscribe from any component or service. - Fully compatible with Angular v13 and above.
npm install ng-connection-monitor
import { HttpClientModule } from '@angular/common/http';
@NgModule({
imports: [
HttpClientModule,
// other imports
],
})
export class AppModule {}
import { NgConnectionMonitorService } from './ng-connection-monitor.service';
@NgModule({
declarations: [],
imports: [
CommonModule
],
providers:[NgConnectionMonitorService]
})
export class NgConnectionMonitorModule { }
import { NgConnectionMonitorService } from 'ng-connection-monitor'; // library import
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
title = 'demo';
onlineStatus:any
constructor(private networkStatusService: NgConnectionMonitorService){
this.networkStatusService.isOnline$.subscribe(data=>{
this.onlineStatus = data
console.log("data",data)
});
}
}
-
Starts a timer loop every 3 seconds
-
Pings the configured backend endpoint (default: /api/ping)
-
If response is 200, emits true, else false
-
Keeps emitting changes only when status flips (distinctUntilChanged)
isOnline$ : Observable<boolean>
-
Detect slow internet & emit custom message (e.g., "Slow Connection Detected")
-
Support multi-ping strategies
-
Angular signals support (v17+)
Let me know if you want to replace Sourav with your actual GitHub handle or real name.