Network Stats

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 être wifi, mobile ou null. Si elle vaut null, 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 une Array 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) :

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.

Voir aussi

Étiquettes et contributeurs liés au document

Étiquettes :
Contributeurs ayant participé à cette page : SphinxKnight
Dernière mise à jour par : SphinxKnight,