aboutsummaryrefslogtreecommitdiff
path: root/files/pt-br/webapi/network_stats/index.html
blob: 9276841db3fd669f6f5e1f4352b09d41991d4ecd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
---
title: Network Stats
slug: WebAPI/Network_Stats
translation_of: Archive/B2G_OS/API/Network_Stats_API
---
<p>{{ non-standard_header() }}</p>
<p>{{ B2GOnlyHeader2('certified') }}</p>
<h2 id="Sumário">Sumário</h2>
<p>A API do Estado de Rede permite monitorar utilização de dados e expor esses dados para aplicações certificadas.</p>
<p>Os dados podem ser acessados através de {{domxref("window.navigator.mozNetworkStats","navigator.mozNetworkStats")}} que é uma instância da interface {{domxref("MozNetworkStatsManager")}}.</p>
<h2 id="Acessando_os_dados">Acessando os dados</h2>
<p>Informações sobre o volume de dados recebidos e enviados é automaticamente guardado no sistema.  É possível acessá-los utilizando o método {{domxref("MozNetworkStatsManager.getNetworkStats()")}}. Este método espera um objeto de configuração como seu primeiro parâmetro, que deve conter as seguintes propriedades:</p>
<ul>
 <li><code>start</code>: Um objeto data representando o começo dos dados mensurados.</li>
 <li><code>end</code>: Um objeto data representando o final dos dados mensurados.</li>
 <li><code>connectionType</code>: A origem dos dados. Pode ser  <code>wifi</code>, <code>mobile</code>, ou <code>null</code>. Se for <code>null</code>, os dados mensurados de ambas origens são fundidos. Para saber com antecedência qual tipo de origem está disponível, a propriedade {{domxref("MozNetworkStatsManager.connectionTypes")}} returna um <a href="/en-US/docs/JavaScript/Reference/Global_Objects/Array" title="/en-US/docs/JavaScript/Reference/Global_Objects/Array"><code>Array</code></a> de strings representando cada origem suportada.</li>
</ul>
<p>Quando chamada, este método retorna um {{domxref("DOMRequest")}} para lidar com o sucesso ou falha das informações requisitadas. Em caso de sucesso o <code>result</code> requisitado é um objeto {{domxref("MozNetworkStats")}}.</p>
<pre class="brush: js">var manageWifi   = navigator.mozNetworkStats.connectionTypes.indexOf('wifi')   &gt; -1;
var manageMobile = navigator.mozNetworkStats.connectionTypes.indexOf('mobile') &gt; -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);
}
</pre>
<h2 id="Amostragem_ao_longo_do_tempo">Amostragem ao longo do tempo</h2>
<p>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.</p>
<p>Quando requisitar os estados, o resultado do objeto {{domxref("MozNetworkStats")}} contém quantos o maior número de dados possíveis para um intervalo definido entre as datas de <code>start</code> e <code>end</code>. O número total de blocos depende de dois parâmetros (note que os parâmetros são apenas para leitura):</p>
<ul>
 <li>{{domxref("MozNetworkStatsManager.sampleRate")}}, que representa o tempo em segundos entre dois blocos.</li>
 <li>{{domxref("MozNetworkStatsManager.maxStorageSamples")}}, que representa o número máximo de blocos de cada tipo de conexão.</li>
</ul>
<p>Cada bloco é um objeto {{domxref("MozNetworkStatsData")}}, e <span id="result_box" lang="pt"><span class="hps">todos os</span> <span class="hps">blocos de dados</span> <span class="hps">para um determinado</span> <span class="hps">período de tempo</span> <span class="hps">estão disponíveis</span> <span class="hps">através da propriedade</span></span> {{domxref("MozNetworkStats.data")}}, que são um <a href="/en-US/docs/JavaScript/Reference/Global_Objects/Array" title="/en-US/docs/JavaScript/Reference/Global_Objects/Array"><code>Array</code></a> de objetos {{domxref("MozNetworkStatsData")}}.</p>
<pre class="brush: js">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);
}</pre>
<h2 id="Especificações">Especificações</h2>
<p>Não faz parte de uma especificação</p>
<h2 id="Veja_também">Veja também</h2>
<ul>
 <li>{{domxref("window.navigator.mozNetworkStats","navigator.mozNetworkStats")}}</li>
 <li>{{domxref("MozNetworkStats")}}</li>
 <li>{{domxref("MozNetworkStatsData")}}</li>
 <li>{{domxref("MozNetworkStatsManager")}}</li>
 <li><a href="/en-US/docs/WebAPI/Network_Stats_2_0_proposal" title="/en-US/docs/WebAPI/Network_Stats_2_0_proposal">NetworkStats API 2.0 proposal</a></li>
</ul>