Open Source Web Application Framework for ASP.NET Core
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

2.1 KiB

Internet Connection Service

InternetConnectionService is a service which is exposed by @abp/ng.core package. If you want to detect whether you are connected to the internet or not, you can use this service.

internet-connection-service.ts

import { DOCUMENT } from  '@angular/common';
import { Injectable, computed, inject, signal } from  '@angular/core';
import { BehaviorSubject } from  'rxjs';

@Injectable({
	providedIn: 'root',
})

export  class  InternetConnectionService{
	protected  readonly  window  =  inject(DOCUMENT).defaultView;
	protected  readonly  navigator  =  this.window.navigator;

	/* BehaviorSubject */
	private  status$  =  new  BehaviorSubject<boolean>(navigator.onLine)

	/* creates writableSignal */
	private  status  =  signal(navigator.onLine);

	/* READONLY ANGULAR SIGNAL */
	networkStatus  =  computed(() =>  this.status())

	constructor(){
		this.window.addEventListener('offline', () =>  this.setStatus());
		this.window.addEventListener('online', () =>  this.setStatus());
	}

	private  setStatus(){
		this.status.set(navigator.onLine)
		this.status$.next(navigator.onLine)
	}

	/* returns OBSERVABLE */
	get  networkStatus$(){
		return  this.status$.asObservable()
	}
}

Getting Started

When you inject InternetConnectionService you can get the current internet status also if status changes you can catch them immediately.

As you can see from the code above, InternetConnectionService is providing 2 alternatives for catching network status;

  1. Signal (readonly)
  2. Observable

How To Use

İt's easy just inject the service and get network status

You can get via signal

class someComponent{
	internetConnectionService  =  inject(InternetConnectionService);
	isOnline = this.internetConnectionService.networkStatus
}

or you can get as observable

class someComponent{
	internetConnectionService = inject(InternetConnectionService);
	isOnline = this.internetConnectionService.networkStatus$
}

That's all, feel free to try on your template