WebRTCPeerConnection

Успадковує: RefCounted < Object

Успадковано від: WebRTCPeerConnectionExtension

Інтерфейс до підключення WebRTC.

Опис

Підключення WebRTC між локальним комп'ютером та віддаленим літцем. Забезпечує інтерфейс для підключення, підтримки та моніторингу підключення.

Налаштування підключення WebRTC між двома однолітками не може здатися дрібним завданням, але його можна розбити на 3 основні кроки:

до Абонент, який хоче ініціювати з'єднання (A з теперішнього часу) створює пропозицію та надішлемо іншим аналогам (B.

  • B отримує пропозицію, генерує і відповідає її A.

  • A і B потім генерує і обміняємо кандидатів ICE з кожним іншим.

Після цих кроків з'єднання повинна бути підключена. Зберігати на читання або подивитися в підручник для отримання додаткової інформації.

Методи

Error

add_ice_candidate(media: String, index: int, name: String)

void

close()

WebRTCDataChannel

create_data_channel(label: String, options: Dictionary = {})

Error

create_offer()

ConnectionState

get_connection_state() const

GatheringState

get_gathering_state() const

SignalingState

get_signaling_state() const

Error

initialize(configuration: Dictionary = {})

Error

poll()

void

set_default_extension(extension_class: StringName) static

Error

set_local_description(type: String, sdp: String)

Error

set_remote_description(type: String, sdp: String)


Сигнали

data_channel_received(channel: WebRTCDataChannel) 🔗

Випромінюється, коли надходить новий внутрішньосмуговий канал, тобто коли канал було створено з negotiated: false (за замовчуванням).

Об’єкт буде екземпляром WebRTCDataChannel. Ви повинні зберегти посилання на нього, інакше воно буде закрито автоматично. Перегляньте create_data_channel().


ice_candidate_created(media: String, index: int, name: String) 🔗

При створенні нового кандидата ICE. Три параметри повинні бути передані на віддалений одноліток над сигналізацією сервера.


session_description_created(type: String, sdp: String) 🔗

Викликається після успішного виклику методу create_offer() або методу set_remote_description() (коли генерується відповідь). Параметри призначені для передачі методу set_local_description() цього об'єкта та надсилання віддаленому вузлу через сигнальний сервер.


Переліки

enum ConnectionState: 🔗

ConnectionState STATE_NEW = 0

З'єднання є новими, каналами даних і пропозицією може бути створений в цьому стані.

ConnectionState STATE_CONNECTING = 1

Компанія «Експо» не з'єднує, ICE не вдається.

ConnectionState STATE_CONNECTED = 2

Підключаються всі транспортні засоби ICE.

ConnectionState STATE_DISCONNECTED = 3

Принаймні один ICE-транспорт відключений.

ConnectionState STATE_FAILED = 4

Один або інший вантажний транспорт не вдалося.

ConnectionState STATE_CLOSED = 5

З'єднання з'єднання закрито (після виклику методиком близько.


enum GatheringState: 🔗

GatheringState GATHERING_STATE_NEW = 0

У зв'язку з тим, що зв'язок був створений і не зробив жодного зв'язку.

GatheringState GATHERING_STATE_GATHERING = 1

У процесі збору кандидатів на з'єднання є агент ICE.

GatheringState GATHERING_STATE_COMPLETE = 2

Збір кандидатів на ICE агент. Якщо щось відбувається, що вимагає збору нових кандидатів, таких як новий інтерфейс, який додається або додавання нового сервера ICE, держава буде перевернутися до збору кандидатів.


enum SignalingState: 🔗

SignalingState SIGNALING_STATE_STABLE = 0

Не існує постійного обміну пропозицією та відповіді на метро. Це може означати, що WebRTCPeerConnection є новим (STATE_NEW) або що переговори є повним і з'єднання було створено (STATE_CONNECTED).

SignalingState SIGNALING_STATE_HAVE_LOCAL_OFFER = 1

Локальний вузол викликав метод set_local_description(), передавши SDP, що представляє пропозицію (зазвичай створену викликом методу create_offer), і пропозицію було успішно застосовано.

SignalingState SIGNALING_STATE_HAVE_REMOTE_OFFER = 2

Віддалений одноліток створив пропозицію і використовував сервер сигналізації, щоб доставити його на локальний одноліток, який встановлює пропозицію як віддалений опис за допомогою виклику set_remote_description().

SignalingState SIGNALING_STATE_HAVE_LOCAL_PRANSWER = 3

Надана послуга дистанційного з’єднання, яка була створена і надана за допомогою виклику set_local_description(). Ця надана відповідь описує підтримувані медіа формати і так далі, але не може мати повного набору кандидатів ICE. Далі кандидатів будуть доставлені окремо.

SignalingState SIGNALING_STATE_HAVE_REMOTE_PRANSWER = 4

Відповідна відповідь була отримана і успішно застосована у відповідь на пропозицію раніше відправлено і встановлене за телефоном set_local_description().

SignalingState SIGNALING_STATE_CLOSED = 5

Закрило WebRTCPeerConnection.


Описи методів

Error add_ice_candidate(media: String, index: int, name: String) 🔗

Додавання кандидата льоду, створеного дистанційним атом (і отримано на сервері сигналізації). Подивитися ice_candidate_created.


void close() 🔗

Закрийте підключення та всі канали даних, пов'язані з ним.

Примітка: Ви не можете повторно використовувати цей об'єкт для нового підключення, якщо ви зателефонуєте initialize().


WebRTCDataChannel create_data_channel(label: String, options: Dictionary = {}) 🔗

Повертає новий WebRTCDataChannel (або null у разі невдачі) із заданим label та опціонально налаштованим через словник options. Цей метод можна викликати лише тоді, коли з'єднання перебуває в стані STATE_NEW.

Існує два способи створити робочий канал даних: або викликати create_data_channel() лише на одному з вузлів та прослуховувати data_channel_received на іншому, або викликати create_data_channel() на обох вузлах, з однаковими значеннями, та опцією "negotiated", встановленою на true.

Дійсні options:

{
    "negotiated": true, # Якщо встановлено значення true (за замовчуванням вимкнено), це означає, що канал узгоджується поза діапазоном. Також потрібно встановити "id". "data_channel_received" не буде викликано.
    "id": 1, # Коли "negotiated" має значення true, це значення також має бути встановлене на однакове значення на обох вузлах.

    # Можна вказати лише один з maxRetransmits та maxPacketLifeTime, а не обидва одночасно. Вони роблять канал ненадійним (але також кращим у режимі реального часу).
    "maxRetransmits": 1, # Вкажіть максимальну кількість спроб повторної передачі пакетів, яку зробить вузол, якщо вони не будуть підтверджені.
    "maxPacketLifeTime": 100, # Вкажіть максимальний час (у мілісекундах), після якого повторна передача непідтверджених пакетів може бути припинена.
    "ordered": true, # У ненадійному режимі (тобто встановлено значення "maxRetransmits" або "maxPacketLifetime"), значення "ordered" (за замовчуванням true) вказує, чи потрібно примусово встановлювати порядок пакетів.

    "protocol": "my-custom-protocol", # Рядок спеціального підпротоколу для цього каналу.
}

Примітка: Ви повинні зберегти посилання на канали, створені таким чином, інакше їх буде закрито.


Error create_offer() 🔗

Створює нову SDP пропозицію, щоб запустити підключення WebRTC з віддаленим літцем. Принаймні один WebRTCDataChannel повинен бути створений перед тим, як викликати цей метод.

Якщо ця функція повертає @GlobalScope.OK, Session_description_created буде викликано, коли сеанс готовий надсилати.


ConnectionState get_connection_state() const 🔗

Повертає стан з'єднання.


GatheringState get_gathering_state() const 🔗

Повернення ICE GatheringState з'єднання. Це дозволяє виявляти, наприклад, при отриманні кандидатів ICE.


SignalingState get_signaling_state() const 🔗

Повертає стан сигналізації на локальному кінці з'єднання при підключенні або відключенні на інший одноліток.


Error initialize(configuration: Dictionary = {}) 🔗

Повторно ініціалізуйте це однорангове з’єднання, закриваючи будь-яке раніше активне з’єднання та повертаючись до стану STATE_NEW. Для налаштування однорангового з’єднання можна передати словник параметрів configuration.

Дійсні параметри configuration:

{
    "iceServers": [
        {
            "urls": [ "stun:stun.example.com:3478" ], # Один або кілька серверів STUN.
        },
        {
            "urls": [ "turn:turn.example.com:3478" ], # Один або більше серверів TURN.
            "username": "a_username", # Додаткове ім'я користувача для сервера TURN.
            "credential": "a_password", # Додатковий пароль для сервера TURN.
        }
    ]
}

Error poll() 🔗

Викликайте цей метод часто (наприклад, у Node._process() або Node._physics_process()), щоб правильно отримувати сигнали.


void set_default_extension(extension_class: StringName) static 🔗

Налаштування розширення_class як за замовчуванням WebRTCPeerConnectionExtension повертається при створенні нового WebRTCPeerConnection.


Error set_local_description(type: String, sdp: String) 🔗

Встановлює SDP-опис локального вузла. Його слід викликати у відповідь на session_description_created.

Після виклику цієї функції вузол почне видавати ice_candidate_created (якщо не буде повернуто Error, відмінний від @GlobalScope.OK).


Error set_remote_description(type: String, sdp: String) 🔗

Встановлює SDP опис пульта дистанційного керування. Це має бути викликано значеннями, що створюються віддаленими однолітками і отримані над сервером сигналізації.

Якщо type is "offer" одноліток випромінює Session_description_created з відповідною відповідь.

Якщо type is "answer"" одноліток почне випромінювати ice_candidate_created.