Je souhaite tester si l'utilisateur dispose d'une connexion Internet active.
Je sais que nous pouvons le faire avec navigator.Online, mais je ne pense pas que cela fonctionne lorsque l'utilisateur dispose d'un réseau WiFi limité.
J'ai besoin d'afficher une fenêtre contextuelle si l'utilisateur a été déconnecté / a un réseau WiFi limité
4 Réponses :
Essayez de faire une demande XHR au même site Web lui-même (ou peut-être même quelques demandes XHR), et vérifiez si cela échoue, et si c'est le cas, vous pouvez en toute sécurité conclure que l'utilisateur ne dispose pas d'une connexion Internet active.
Vous pouvez utiliser ce package npm ng-connection-service après cela, vous pouvez facilement utiliser le code suivant dans le composant racine de votre application:
constructor (private connectionService: ConnectionService) { this.connectionService.monitor().subscribe((isConnected: boolean) => { if (!isConnected) { alert('oops you have no Internet connection'); } }); }
vous pouvez créer une fonction comme celle-ci:
const isOnline = await checkConnection() === 'online';
Et l'utiliser comme ceci:
const checkConnection = () => fetch('https://google.com') .then(response => { if (!response.ok) { throw new Error('HTTP status ' + response.status); } return response; }) .then(response => 'online') .catch(error => 'offline');
Il existe une méthode native prise en charge presque partout :
window.addEventListener('online', () => { isOnline = true }) window.addEventListener('offline', () => { isOnline = false })
Est-ce que cela répond à votre question? Détecter que la connexion Internet est hors ligne?