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