Brouillon
Cette page n'est pas terminée.
Non standard
Cette fonctionnalité n'est ni standard, ni en voie de standardisation. Ne l'utilisez pas pour des sites accessibles sur le Web : elle ne fonctionnera pas pour tout utilisateur. Il peut également y avoir d'importantes incompatibilités entre les implémentations et son comportement peut être modifié dans le futur.
Cette API est disponible sur Firefox OS pour des applications certifiées seulement.
Résumé
L'API Network Stats (statistiques réseaux) permet de surveiller l'utilisation des données et de fournir ces informations aux applications disposant des privilèges nécessaires.
On peut accéder aux données grâce à navigator.mozNetworkStats
qui est une instance de l'interface MozNetworkStatsManager
.
Accès aux données
Les informations concernant le volume de données envoyé/reçu est automatiquement enregistré par le système. On peut y accéder avec la méthode MozNetworkStatsManager.getNetworkStats()
. Cette méthode prend un objet de configuration comme premier paramètre, celui-ci doit contenir les propriétés suivantes :
start
: Un objet Date représentant le moment à partir duquel la donnée est mesurée.end
: Un objet Date représentant le moment auquel arrêter la mesure de la donnée.connectionType
: L'origine de la donnée. Cela peut êtrewifi
,mobile
ounull
. Si elle vautnull
, les données mesurées via les deux canaux sont fusionnées. Afin de savoir quel type d'origine est disponible, la propriétéMozNetworkStatsManager.connectionTypes
renvoie uneArray
de chaînes de caractères représentant chaque origine.
Lorsqu'elle est appelée, cette méthode renvoie un objet DOMRequest
permettant de savoir si la requête d'informations a réussi ou échoué. Si elle a réussi, le résultat de la requête, result
, est un objet MozNetworkStats
.
var manageWifi = navigator.mozNetworkStats.connectionTypes.indexOf('wifi') > -1; var manageMobile = navigator.mozNetworkStats.connectionTypes.indexOf('mobile') > -1; var config = { start: new Date(), end : new Date(), connectionType: manageWifi ? 'wifi' : null }; var request = navigator.mozNetworkStats.getNetworkStats(config); request.onsuccess = function () { console.log("Données reçues : " + request.result.data[0].rxBytes + " bytes"); console.log("Données envoyées : " + request.result.data[0].txBytes + " bytes") } request.onerror = function () { console.log("Il y a eu un problème : ", request.error); }
Échantillonage temporel
Afin de voir comment évolue l'utilisation des données au cours du temps, on stocke l'information sous forme de morceaux. Chaque morceau de données représente la quantité de données échangées depuis l'enregistrement du précédent morceau.
Lorsqu'une requête est faite pour obtenir ces statistiques, un objet MozNetworkStats
est envoyé qui contient autant de « morceaux » que possible pour l'intervalle start
-end
. Le nombre total de morceaux dépend de deux paramètres (ces paramètres sont en lecture seule) :
MozNetworkStatsManager.sampleRate
, qui représente le temps écoulé entre deux morceaux de donnéesMozNetworkStatsManager.maxStorageSamples
, qui représente le nombre maximum de « morceaux » à envoyer pour chaque type de connexion.
Chaque morceau de données est un objet MozNetworkStatsData
et tous les morceaux de données d'un moment donné sont accessibles via la propriété MozNetworkStats.data
. Cette propriété est un Array
d'objets MozNetworkStatsData
.
var rate = navigator.mozNetworkStats.sampleRate; var max = navigator.mozNetworkStats.maxStorageSample; var config = { start: new Date() - (rate * max), // Cela permet d'obtenir tous les morceaux de données disponibles. end : new Date(), connectionType: 'mobile' }; var request = navigator.mozNetworkStats.getNetworkStats(config); request.onsuccess = function () { var total = { receive: 0, send : 0 }; this.result.forEach(function (chunk) { total.receive += chunk.rxBytes; total.send += chunk.txBytes; }); console.log("Depuis : " + config.start.toString()); console.log("Données reçues : " + (total.receive * 1000).toFixed(2) + "Ko"); console.log("Données envoyées : " + (total.send * 1000).toFixed(2) + "Ko") } request.onerror = function () { console.log("Il y a eu un problème : ", request.error); }
Spécification
Cette API ne fait partie d'aucune spécification.