An attempt to create polyfill for this specification. Polyfill is based on pinging some url and latency analysis. These are pretty rough measurements. But better than nothing.
npm i -S network-information-api-polyfill
or just
<script src="dist/main.js"></script>
Then you need to initialize it
new NetworkInformationApiPolyfill().then(connection => {
console.log(connection); // or navigator.connection
connection.addEventListener('change', e => {
console.log('change', e);
});
});
Polyfill must do the first request, to get information about network. So you can't use it synchronously, only using promise.
You can pass options during initialization:
new NetworkInformationApiPolyfill({
// here
});
Type: number
Default: 5000
Timeout of request. After this time, the network will be considered unavailable (navigator.connection.type === 'none).
Type: number
Default: 6000
A frequency of pinging.
Type: string
Default: ${location.protocol}//network-information-api.surge.sh/1b.txt
An url, that will be pinged. It is strongly recommended to have your own address. It improves the accuracy of measurements in relation to the user of your service.
If you have CSP rules, and you don't want own pingUrl
, you must add url
network-information-api.surge.sh to rule connect-src
.