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 serwifi
,mobile
, ounull
. Se fornull
, os dados mensurados de ambas origens são fundidos. Para saber com antecedência qual tipo de origem está disponível, a propriedadeMozNetworkStatsManager.connectionTypes
returna umArray
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):
MozNetworkStatsManager.sampleRate
, que representa o tempo em segundos entre dois blocos.MozNetworkStatsManager.maxStorageSamples
, que representa o número máximo de blocos de cada tipo de conexão.
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