Checking if the internet is accessible in the browser (not local connection only)
window.navigator.onLine is the simplest approach to return the online status of the browser. It is not guaranteed to be accurate. Most implementations of the API watch for changes in the local network interface to determine if your application is online or not. But what if your network interface is up, but your router is down ☝️. window.navigator.onLine will return true and it means that you are online and that is WRONG. To handle that case we make XMLHttpRequest and listen to change in the network state by events window.ononline and window.onoffline to be notified immediately 😎
npm install --save no-internet
yarn add no-internet --save
import noInternet from 'no-internet'noInternet().then(offline => {
if (offline) {
// no internet
}
})function noInternetCallback(offline) {
if (offline) {
// no internet
}
}
// connection is checked and callback is called each 5000 milliseconds
noInternet({ callback: noInternetCallback })
// clear interval
noInternet.clearInterval()noInternet({
milliseconds: 10000,
timeout: 4000,
callback: noInternetCallback,
url: 'https://github.com/favicon.ico',
headers: { 'Access-Control-Allow-Origin': '*' }
})Type: Object
Type: number
Default: 5000
Connection is checked at specified intervals (in milliseconds)
Type: number
Default: 5000
Number of milliseconds a request can take before automatically being terminated (completed).
Type: string
Default: ${window.location.protocol}//${window.location.host}/favicon.ico
HTTP request is sent to DOMAIN/favicon.ico for connection checking.
You can specify URL with domain for e.g. https://github.com/favicon.ico
Type: Object
Default: { 'Cache-Control': 'no-cache' }
An object of additional headers key/value pairs to send along with request
Type: function
Arguments: offline type boolean
Default: undefined
Function that gets called in each connection checking
Any contributions you make are greatly appreciated.
Please read the Contributions Guidelines before submitting a PR.
MIT © Vasyl Stokolosa