非標準
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 internal applications only.

摘要

Network Stats API 將監控資料用量,並將此數據提供給 Certified Apps。

navigator.mozNetworkStats 屬於 MozNetworkStatsManager 介面的實體 (Instance)。透過 navigator.mozNetworkStats 即可取得相關資料。

存取資料

有關已接收/已傳送資料量的資訊,均將由系統自動儲存。而 MozNetworkStatsManager.getNetworkStats() 函式可存取相關資訊。此函式的第一組參數屬於組態物件,且必備下列屬性:

  • start:資料物件,代表資料統計開始。
  • end:資料物件,代表資料統計結束。
  • connectionType:資料來源,亦即連線類型。可能為「wifimobilenull。若為 null,則會合併此 2 項來源的資料統計量。若要事先知道資料來源是否有效,則 MozNetworkStatsManager.connectionTypes 屬性可回傳由字串 (代表各種支援的連線類型) 所構成的 Array

一旦呼叫此函式,隨即回傳 DOMRequest 以處理資訊請求的成功或失敗狀態。若為成功狀態,則請求的 result 即為 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);
}

隨著時間連續取樣

資料總量的相關資訊均儲存於區塊 (Chunk) 中,以利隨時查看資料流量。各個區塊均為 1 組值,代表上個區塊儲存之後所交換的資料總量。

在請求統計資料時,MozNetworkStats 物件將針對 startend 日期之間所定義的間隔,儘量攜帶夠多的資料區塊。區塊的總數將因下列 2 組參數 (均屬唯讀參數) 而有所變化:

各個資料區塊均為 1 個 MozNetworkStatsData 物件。透過MozNetworkStats.data 屬性即可取得各個既定時間框架 (Time frame) 的所有資料區塊,進而形成 MozNetworkStatsData 物件的 Array

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);
}

規格

尚無任何規格。

另可參閱

文件標籤與貢獻者

此頁面的貢獻者: MashKao
最近更新: MashKao,