web-dev-qa-db-fra.com

Comment vérifier le type de connexion (WiFi / LAN / WWAN) en utilisant HTML5 / JavaScript?

Je souhaite adapter un site Web particulier à une version à faible bande passante si le client est connecté via une connexion WWAN (mesurée) ou autrement.

Le type de connexion est important pour que le site sache s'il doit fournir une expérience riche ou une expérience efficace en bande passante. Mon bureau fonctionne sur une connexion avec compteur et à l'avenir, plus de bureaux seront connectés via des réseaux cellulaires avec compteur (y compris les tablettes PC Windows 8), les applications Web efficaces doivent respecter le fait qu'un utilisateur pourrait ne pas avoir besoin d'actifs détaillés sur un paiement à la carte. connexion octet.

Comment vérifier si le client est connecté via WiFi/LAN/WWAN en utilisant HTML5/JavaScript?

REMARQUE: je ne souhaite pas vérifier explicitement les en-têtes de navigateur (ce qui n'est pas vraiment une solution pour les navigateurs de bureau qui peuvent se connecter à Internet via plusieurs méthodes).

22
Chris

Voir navigator.connection (préfixé). Cette API expose des informations sur la bande passante du client.

16
Rob W

Tu ne peux pas. Les informations sur la façon dont un client est connecté (c'est-à-dire les technologies qu'il utilise, s'il s'agit d'un paiement par octet ou d'un taux forfaitaire) à un serveur ne sont pas publiques. Vous pourrez peut-être obtenir un itinéraire de suivi (avec tous les problèmes liés au suivi), si cela vous aide, mais ces informations ne seront pas accessibles en JavaScript.

Ce que peut faire JS, c'est un simple test de bande passante. Téléchargez un fichier de taille connue via XHR et mesurez le temps nécessaire.

Le modèle de paiement d'une connexion est une donnée privée absolue. Il ne sera pas non plus envoyé aux serveurs sur Internet, ni disponible sur un site Web chargé. Si vous avez besoin de ces informations pour offrir au client une application personnalisée, demandez directement à l'utilisateur . Il vous dira s'il le veut.


Mais attendez. Dernière Chrome et Firefox peuvent être définis (préférence de l'utilisateur) pour fournir ces données sur le expérimental navigator.connection objet .

De plus, pour développer des applications Metro, Windows propose de telles informations sur le Windows.Networking.Connectivity API , voir ce tutoriel .

6
Bergi

Vieille question, mais en cherchant à mes propres fins, j'ai trouvé cela - je n'ai pas encore essayé et donc donc YMMV: https://github.com/ashanbh/detectClientSpeed .

La notion sous-jacente de mesurer le temps de téléchargement d'un actif pour obtenir des informations sur la bande passante est subjective et pas nécessairement cohérente, mais à court d'API de plateforme native pour iOS/Android, ce n'est pas une mauvaise option. Une alternative plus légère peut être de mesurer les temps de ping vers quelque chose comme google.com.

2
Chrispy