MDN wants to learn about developers like you: https://qsurvey.mozilla.com/s3/MDN-dev-survey

非標準

This API is available on Firefox OS for certified 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,