Spec-Zone.ru › Web APIs

RTCPeerConnection: метод getStats()

Базовая Широко поддерживается

Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна во всех браузерах с января 2020 года.

  • Подробнее
  • Полная совместимость
  • Отправить отзыв

Метод getStats() интерфейса RTCPeerConnection возвращает промис, который разрешается данными, предоставляющими статистику о соединении в целом или о заданном MediaStreamTrack.

Синтаксис

getStats()
getStats(selector)

getStats(selector, successCallback, failureCallback) // deprecated

Параметры

selector Необязательно

MediaStreamTrack для которого собирается статистика. Если это null (значение по умолчанию), статистика будет собрана для всего RTCPeerConnection.

Устаревшие параметры

В старом коде и документации вы можете увидеть версию этого метода с обратными вызовами. Она устарела и её использование настоятельно не рекомендуется. Следует обновить любой существующий код, чтобы использовать версию на основе Promise вместо getStats(). Параметры старой формы getStats() описаны ниже, чтобы помочь в обновлении существующего кода.

successCallback Устарело

Функция обратного вызова, вызываемая после успешного создания отчёта.

failureCallback Устарело

Функция обратного вызова, вызываемая после неудачи в создании отчёта.

Возвращаемое значение

A Promise, который разрешается объектом RTCStatsReport, предоставляющим статистику соединения. Содержание отчета зависит от selector и других деталей соединения.

Исключения

Этот метод не вызывает исключений; вместо этого он отклоняет возвращаемый промис с одной из следующих ошибок:

InvalidAccessError DOMException

Выбрасывается, если нет RTCRtpSender или RTCRtpReceiver, чьё track соответствует заданному selector, или selector соответствует более чем одному отправителю или получателю.

Примеры

В этом примере с помощью setInterval() создаётся периодическая функция, которая собирает статистику для RTCPeerConnection каждую секунду, генерируя отчёт в формате HTML и вставляя его в определённый элемент в DOM.

setInterval(() => {
  myPeerConnection.getStats(null).then((stats) => {
    let statsOutput = "";

    stats.forEach((report) => {
      statsOutput +=
        `<h2>Report: ${report.type}</h2>\n<strong>ID:</strong> ${report.id}<br>\n` +
        `<strong>Timestamp:</strong> ${report.timestamp}<br>\n`;

      // Now the statistics for this report; we intentionally drop the ones we
      // sorted to the top above

      Object.keys(report).forEach((statName) => {
        if (
          statName !== "id" &&
          statName !== "timestamp" &&
          statName !== "type"
        ) {
          statsOutput += `<strong>${statName}:</strong> ${report[statName]}<br>\n`;
        }
      });
    });

    document.querySelector(".stats-box").innerHTML = statsOutput;
  });
}, 1000);

Это работает, вызывая getStats(), а затем, когда промис разрешается, перебирая объекты RTCStatsReport в возвращённом RTCStatsReport. Для каждого отчёта создаётся раздел со заголовком и всей статистикой ниже, причём тип, ID и отметка времени обрабатываются особым образом, чтобы поместить их в начало списка.

После того, как HTML-код отчёта сгенерирован, он вставляется в элемент с классом "stats-box" путём установки его свойства innerHTML.

Спецификации

Спецификация
WebRTC: Реальная передача данных в браузерах
# widl-RTCPeerConnection-getStats-Promise-RTCStatsReport--MediaStreamTrack-selector

Совместимость с браузерами

Рабочие столы Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet WebView Android
getStats 24 15 27 15 11 25 27 14 11 1.5 4.4
returns_promise 58 79 37 45 11 58 37 43 11 7.0 58
selector_parameter 67 ≤79 27 54 11 67 27 48 11 9.0 67

© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection/getStats

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API