Skip to content

Teleport JavaScript API ​

INFO

Данный раздел содержит подробное описание JavaScript API Teleport SDK, доступного после подключения библиотеки на вашу веб-страницу.

Global Namespace teleport ​

Глобальный объект teleport доступен в контексте window после успешного подключения JavaScript-библиотеки Teleport.

js
console.log(window.teleport.version); // Пример доступа к свойствам

Свойства teleport (Static Properties) ​

НаименованиеТип данныхОписание
versionstringВерсия загруженного Teleport SDK.
QualityenumПеречисление значений качеств видео.
SegmentTypeenumПеречисление значений типов сегментов.
PeeringModeenumПеречисление значений режимов пиринга.
NodrStrategyenumПеречисление флагов стратегии взаимодействия с узлами NODR.

Методы teleport (Static Methods) ​

initialize(options) ​

Инициализирует экземпляр Teleport SDK.

Возвращаемый результат: Promise<ITeleportInstance>

Аргументы:

НаименованиеТип данныхОписание
optionsITeleportFactoryOptionsПараметры инициализации Teleport SDK.

Пример:

js
let tlprt = await teleport.initialize({
    apiKey: "APIKEY", // Ваш API-ключ
    loader: {
        type: "player plugin ID", // Идентификатор плагина плеера
        params: {player: player} // Экземпляр плеера
    }
});

await player.load("manifest url");

Интерфейс ITeleportInstance ​

Экземпляр ITeleportInstance возвращается методом teleport.initialize() и предоставляет доступ к управлению пиринговой сетью, получению статистики и другим функциям SDK.

События ITeleportInstance ​

onPeeringModeChanged ​

Событие, вызываемое при изменении режима пиринга.

Сигнатура: (mode: PeeringMode) => void

Пример:

js
tlrpt.onPeeringModeChanged = (mode) => console.log(`current peering mode: ${teleport.PeeringMode[mode]}`);

onPeerConnectionOpened ​

Событие, вызываемое при установке соединения с новым пиром.

Сигнатура: (peerId: string) => void

Пример:

js
tlrpt.onPeerConnectionOpened = (peerId) => console.log(`peer connected: ${peerId}`);

onPeerConnectionClosed ​

Событие, вызываемое при разрыве соединения с пиром.

Сигнатура: (peerId: string) => void

Пример:

js
tlrpt.onPeerConnectionClosed = (peerId) => console.log(`peer disconnected: ${peerId}`);

onSegmentLoaded ​

Событие, вызываемое при загрузке нового видео-сегмента.

Сигнатура: (segment: ISegment) => void

Пример:

js
tlrpt.onSegmentLoaded = (segment) => console.log(`segment loaded:`, segment);

onSegmentUploaded ​

Событие, вызываемое при отдаче видео-сегмента в пиринговую сеть.

Сигнатура: (segment: ISegment) => void

Пример:

js
tlrpt.onSegmentUploaded = (segment) => console.log(`segment uploaded:`, segment);

Свойства ITeleportInstance ​

НаименованиеТип данныхТолько для чтенияОписание
versionstringtrueВерсия загруженного Teleport SDK.
apiKeystringtrueAPI Key, с которым инициализирован Teleport.
connectionIdstringtrueИдентификатор текущего пира.
connectedbooleantrueФлаг активности подключения к сигнальному серверу Teleport.
peeringModePeeringModefalseТекущий режим работы пиринга.
nodrStrategyNodrStrategyfalseТекущая стратегия взаимодействия с узлами NODR (битовая маска).

Методы ITeleportInstance ​

buffering() ​

Метод для сигнализирования Teleport о возникновении буферизации в видео-плеере.

getStatTotals() ​

Возвращает суммарную статистику по трафику у текущего экземпляра Teleport.

Возвращаемый результат: IStatTotals

Пример:

js
console.log(tlprt.getStatTotals());

getStatDetails() ​

Возвращает суммарную статистику по трафику в разрезе WebRTC-подключений у текущего экземпляра Teleport.

Возвращаемый результат: IStatDetails

Пример:

js
console.log(tlprt.getStatDetails());

dispose() ​

Метод, уничтожающий экземпляр Teleport с корректным высвобождением всех ресурсов.

Возвращаемый результат: Promise<void>

getLoader() ​

Возвращает API текущего лоадера. API есть не у всех лоадеров, в случае его отсутствия возвращается undefined.

Возвращаемый результат: any

Перечисления (Enums) ​

Список доступных перечислений в глобальном namespace teleport.

Quality ​

Перечисление качеств видео-потока.

Доступные значения:

  • Q144P
  • Q240P
  • Q360P
  • Q480P
  • Q720P
  • Q1080P
  • Q4K
  • Other

SegmentType ​

Перечисление типов сегментов.

Доступные значения:

  • Unknown
  • Video
  • Audio
  • Caption
  • Other

PeeringMode ​

Перечисление режимов пиринга для работы Teleport SDK.

Доступные значения:

  • Off - Пиринг выключен.
  • Download - Пир может только скачивать контент из Teleport PDN (Peer-to-Peer Delivery Network).
  • Upload - Пир может только раздавать контент в Teleport PDN.
  • Full - Пир работает в полном режиме: скачивает и раздает контент.

Пример:

js
tlrpt.peeringMode = teleport.PeeringMode.Download;

NodrStrategy ​

Перечисление флагов битовой маски для управления стратегией взаимодействия с узлами NODR (Node Delivery Resource). Подробное описание каждого флага приведено в разделе nodrStrategy.

Доступные значения:

  • NO (0) — Взаимодействие с NODR отключено (по умолчанию).
  • NODR_LOW_PRIORITY (1) — Пониженный приоритет NODR-пиров (в первую очередь опрашиваются браузерные участники).
  • NODR_EXTRA_CYCLE (2) — Дополнительный цикл P2P-загрузки с узла NODR, если обычный P2P-цикл не вернул данных.
  • NODR_PROXY (4) — Использование NODR в качестве HTTP-прокси перед переходом к CDN.
  • NODR_BYTE_RANGE (8) — Докачка недозагруженного сегмента по байтовому диапазону (range).
  • ALL (15) — Включение всех механизмов взаимодействия с NODR.

Пример:

js
tlrpt.nodrStrategy = teleport.NodrStrategy.NODR_PROXY | teleport.NodrStrategy.NODR_BYTE_RANGE;

Интерфейсы (Interfaces) ​

Описание доступных TypeScript/JavaScript интерфейсов.

ITeleportFactoryOptions ​

Параметры для метода teleport.initialize().

НаименованиеТип данныхОписание
apiKeystringAPI key для доступа к Teleport. Можно получить в личном кабинете.
configobjectДополнительные параметры конфигурации Teleport SDK (например, nodrStrategy).
loaderIPluginOptionsПараметры для интеграции с видео-плеером.

IPluginOptions ​

Параметры для настройки лоадера плеера.

НаименованиеТип данныхОписание
typestringИдентификатор плагина для интеграции с плеером (например, shaka, hls-js, video-js, jwplayer, uppod-html5, clappr-dash, clappr-hls, sw).
paramsIPluginIntegrationOptionsДополнительные параметры для интеграции с видео-плеером.

IPluginIntegrationOptions ​

Параметры для конфигурации поведения плагинов к плеерам.

НаименованиеТип данныхОписание
manifestAcceptor(url: string) => booleanФункция для определения HTTP-запроса с манифестом видео-потока.
segmentAcceptor(url: string) => booleanФункция для определения HTTP-запроса с видео-сегментом.
urlCleaner(url: string) => stringФункция для унификации URL-адресов видео-сегмента и манифеста.
qualityGetter(segmentUrl: string) => [Quality](#enums-quality)Функция для определения качества активного видео-потока.
segmentTypeGetter(segmentUrl: string) => [SegmentType](#enums-segmenttype)Функция для определения типа загружаемого сегмента.
bufferSizeGetter() => numberФункция для считывания текущего размера буфера у плеера.
durationGetter(segmentUrl: string) => numberФункция для считывания длительности запрашиваемого видео-сегмента.

ISegment ​

JavaScript-объект, содержащий данные о видео-сегменте.

НаименованиеТип данныхОписание
timestampnumberUNIX timestamp времени загрузки сегмента.
resultISegmentResultСвойство с данными результата загрузки сегмента.
requestISegmentRequestСвойство с данными запрошенного сегмента.
timingsISegmentTimingsСвойство с данными замеренных таймингов загрузки.

ISegmentResult ​

Результат загрузки видео-сегмента.

НаименованиеТип данныхОписание
segmentIdstringИдентификатор сегмента.
sourceIdCDN | PDNИсточник, из которого был скачан сегмент (CDN или PDN).
targetIdstring | undefinedИдентификатор пира, с которого был скачан сегмент, если sourceId = PDN.
rangestring | undefinedДиапазон скачанных байтов сегмента.
flagsnumberФлаги загрузки.
havesnumberКоличество пиров с указанным сегментом в рое.
waitTimeoutnumberТаймаут ожидания из Teleport PDN.
downloadTimeoutnumberТаймаут загрузки из Teleport PDN.
sizenumberРазмер сегмента в байтах.
swarmSizenumberРазмер роя (количество активных пиров в сети).
connectedbooleanФлаг активности соединения с сигнальным сервером Teleport.
modePeeringModeТекущий режим пиринга.
activebooleanФлаг активности Teleport PDN.

ISegmentRequest ​

Данные о запрошенном видео-сегменте.

НаименованиеТип данныхОписание
urlstringИсходный URL сегмента.
uristringУнифицированный URI сегмента после обработки urlCleaner.
qualityQualityТекущее качество видео-потока.
typeSegmentTypeТип сегмента.
durationnumberДлительность сегмента в секундах.
bufferSizenumberРазмер буфера в плеере в секундах.

ISegmentTimings ​

Замеренные тайминги загрузки видео-сегмента.

НаименованиеТип данныхОписание
req_startnumberUNIX timestamp времени запроса сегмента плеером (начало запроса).
tthavenumberДельта ожидания сегмента в Teleport PDN (время до первого ответа пира).
ttsentnumberДельта времени инициализации загрузки (время до отправки запроса).
ttfbnumberДельта ожидания первого чанка (Time To First Byte).
ttlbnumberДельта окончания загрузки сегмента (Time To Last Byte).
ttfinishnumberДельта окончания обработки сегмента и передачи данных в плеер.

IStatTotals ​

Суммарная статистика по трафику.

НаименованиеТип данныхОписание
cdnITrafficСтатистика загрузки с CDN.
pdnITrafficСтатистика загрузки с Teleport PDN.
uploadITrafficСтатистика отдачи в Teleport PDN.

IStatDetails ​

Детальная статистика по трафику в разрезе WebRTC-подключений.

НаименованиеТип данныхОписание
totalsIStatTotalsСуммарная статистика загрузки.
detailsArray<[IStatDetailsRow](#interfaces-istatdetailsrow)>Статистика загрузки в разрезе WebRTC-соединений.

IStatDetailsRow ​

Строка детальной статистики для каждого пира.

НаименованиеТип данныхОписание
idstringИдентификатор пира.
downloadITrafficСтатистика загрузки с пира.
uploadITrafficСтатистика отдачи пиру.

ITraffic ​

Статистические данные по трафику.

НаименованиеТип данныхОписание
sizenumberОбъем трафика в байтах.
countnumberКоличество сегментов.
timenumberВремя загрузки в миллисекундах.
speednumberСкорость загрузки в мегабитах в секунду.