Please note, this is a STATIC archive of website developer.mozilla.org from 03 Nov 2016, cach3.com does not collect or store any user information, there is no "phishing" involved.

Monitor

WebIDE Monitor инструмент предназначеный помочь вам отслеживать эффективность работы Firefox OS  приложений и устройств.

The WebIDE Monitor

Monitor способен отображать существующие, интерактивные графики для визуализации временных рядов.

Доступные графики

Monitor поставляется с несколькими различными графиками. Они появляются сразу после того, как WebIDE подключается к Firefox OS.

Обычный пример

Unique Set Size

График показывает работу всех процессов Firefox OS в течение данного времени. Если вас интересует потребление памяти приложением в Firefox OS, запустите приложения, и процесс использования памяти отобразится на графике.

Отображение ваших данных

Отображать любые данные на Monitor очень легко, он принимает отформатированные обновления из разных источников.

Устройства Firefox OS

Вы можете отправить данные с подключенного устройства, путем отправки уведомления наблюдателя.

Примечание: Если вы хотите сделать это в сертифицированном приложении пожалуйста, следуйте этой инструкции.

JavaScript

Services.obs.notifyObservers(null, 'devtools-monitor-update', data);

Вы можете отправить данные из любого кода JS с chrom привилегией. Пример измерения времени выполнения определенного кода JS:

const Services = require('Services');

var start = Date.now();
// code to benchmark
var stop = Date.now();

var data = { graph: 'Performance', myFeature: stop-start, time: stop }
;
Services.obs.notifyObservers(null, 'devtools-monitor-update', JSON.stringify(data));

C++

observerService->NotifyObservers(nullptr, "devtools-monitor-update", data);

Вы можете отправить данные из любого места в Gecko. Пример измерения времени выполнения определенного кода:

#include <time.h>
#include "nsPrintfCString.h"
#include "nsIObserverService.h"

clock_t start = clock();
// code to benchmark
clock_t stop = clock();
double time = (double)(stop - start) / (CLOCKS_PER_SEC / 1000);

nsCOMPtr<nsIObserverService> observerService = services::GetObserverService();
if (observerService) {
  nsPrintfCString str("{\"graph\":\"Performance\",\"myFeature\":%f}", time);
  nsAutoString data = NS_ConvertUTF8toUTF16(str);
  observerService->NotifyObservers(nullptr, "devtools-monitor-update", data.get());
}

С вашего компьютера

 

Можно легко передавать данные на Monitor по серверу WebSockets. Это может быть полезно, если вы пишете расширение Firefox, инструмент командной строки или веб-service.

По умолчанию Monitor ищет сервер работающий на порту 9000 вашего компьютера. Вы можете изменить это путем обновления

devtools.webide.monitorWebSocketURL preference.

Вы также можете в этот момент принимать данные из локальной сети или из любой точки мира через Интернет.

Node.js

TODO

Python

TODO

Поддерживаемые форматы

Monitor принимает данные в виде объектов JSON, которые обычно выглядят следующим образом:

{
  "graph": "myGraph",
  "curve": "myCurve",
  "value": 42,
  "time": 1234567890
}

Этот формат предназначен для большего удобства. Если указано, что График или кривая не существует, он будет создан автоматически.

Произвольные имена

Неопознанные записи будут рассматриваться как имя кривой и стоимости.

Для маленького пакета данных вы можете использовать что-то вроде:

{ "myCurve": 42 }

Это добавит данные указывающие на "myCurve" в графе no name. Отсутствует time по умолчанию, когда Monitor получил пакет.

Для повышения точности лучше всегда указывать метку времени "timestamp" для хранения данных:

{
  "current": 60,

  "voltage": 500,
  "time": 1234567890
}

Несколько значений

В одном обновлении, вы можете отправить данные для нескольких кривых:

{
  "graph": "myGraph",
  "myCurve1": 50,
  "myCurve2": 300,
  "myCurve3": 9000,
  "time": 1234567890
}

Или несколько точек данных для одной кривой:

{
  "graph": "myGraph",
  "curve": "myCurve",
  "values": [
    { "time": 1234567890, "value": 42 },
    { "time": 1234567981, "value": 51 }
  ]
}

Multiple обновления

И вы также можете отправить несколько обновлений данных в виде массива:

[
  { "graph": "Memory", "time": 1234567890, "System": 2600, "My App": 1000 },
  { "graph": "Power", "time": 1234567890, "current": 60, "voltage": 500 }
]

Специальное событие

Чтобы отметить специальное событие в графе с вертикальной чертой, добавьте ключ событий для обновления вашего:

{
  "graph": "myGraph",
  "event": "myEvent",
  "time": 1234567980
}

Метки документа и участники

Метки: 
 Внесли вклад в эту страницу: Tihoem
 Обновлялась последний раз: Tihoem,