Please note, this is a STATIC archive of website developer.mozilla.org from 03 Nov 2016, cach3.com does not collect or store any user information, there is no "phishing" involved.

Network Stats

Non-standard
This feature is non-standard and is not on a standards track. Do not use it on production sites facing the Web: it will not work for every user. There may also be large incompatibilities between implementations and the behavior may change in the future.

This API is available on Firefox OS for certified applications only.

Sumário

A API do Estado de Rede permite monitorar utilização de dados e expor esses dados para aplicações certificadas.

Os dados podem ser acessados através de navigator.mozNetworkStats que é uma instância da interface MozNetworkStatsManager.

Acessando os dados

Informações sobre o volume de dados recebidos e enviados é automaticamente guardado no sistema.  É possível acessá-los utilizando o método MozNetworkStatsManager.getNetworkStats(). Este método espera um objeto de configuração como seu primeiro parâmetro, que deve conter as seguintes propriedades:

  • start: Um objeto data representando o começo dos dados mensurados.
  • end: Um objeto data representando o final dos dados mensurados.
  • connectionType: A origem dos dados. Pode ser  wifi, mobile, ou null. Se for null, os dados mensurados de ambas origens são fundidos. Para saber com antecedência qual tipo de origem está disponível, a propriedade MozNetworkStatsManager.connectionTypes returna um Array de strings representando cada origem suportada.

Quando chamada, este método retorna um DOMRequest para lidar com o sucesso ou falha das informações requisitadas. Em caso de sucesso o result requisitado é um objeto 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("Data received: " + request.result.data[0].rxBytes + " bytes");
  console.log("Data sent: " + request.result.data[0].txBytes + " bytes")
}

request.onerror = function () {
  console.log("Something goes wrong: ", request.error);
}

Amostragem ao longo do tempo

Para ter uma visão dos dados utilizados ao longo do tempo, as informações sobre a quantidade de dados é armazenada em blocos. Cada bloco é um valor representando a quantidade de dados trocados desde que o último bloco foi armazenado.

Quando requisitar os estados, o resultado do objeto MozNetworkStats contém quantos o maior número de dados possíveis para um intervalo definido entre as datas de start e end. O número total de blocos depende de dois parâmetros (note que os parâmetros são apenas para leitura):

Cada bloco é um objeto MozNetworkStatsData, e todos os blocos de dados para um determinado período de tempo estão disponíveis através da propriedade MozNetworkStats.data, que são um Array de objetos MozNetworkStatsData.

var rate = navigator.mozNetworkStats.sampleRate;
var max  = navigator.mozNetworkStats.maxStorageSample;

var config = {
  start: new Date() - (rate * max), // This allows to get all the available data chunks.
  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("Since: " + config.start.toString());
  console.log("Data received: " + (total.receive * 1000).toFixed(2) + "Ko");
  console.log("Data sent: " + (total.send * 1000).toFixed(2) + "Ko")
}

request.onerror = function () {
  console.log("Something goes wrong: ", request.error);
}

Especificações

Não faz parte de uma especificação

Veja também

Etiquetas do documento e colaboradores

 Colaboradores desta página: Fabio.Magnoni
 Última atualização por: Fabio.Magnoni,