非標準
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
:資料來源,亦即連線類型。可能為「wifi
」或
「mobile
」或
「null
」。若為
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
物件將針對 start
與 end
日期之間所定義的間隔,儘量攜帶夠多的資料區塊。區塊的總數將因下列 2 組參數 (均屬唯讀參數) 而有所變化:
MozNetworkStatsManager.sampleRate
代表 2 組區塊之間的時間,以秒計算。MozNetworkStatsManager.maxStorageSamples
代表各種連線類型的最大區塊數量。
各個資料區塊均為 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); }
規格
尚無任何規格。