WebRtcPeerConnection
Интерфейс WebRTC, которому нужна реализация целевой платформы.
Управляет SDP/ICE и data channels через выбранную реализацию. В проверенном чистом Windows C#-проекте без внешнего backend выбирается пустой WebRTCPeerConnectionExtension. Наличие класса и даже значение Error.Ok из пустого виртуального метода не доказывают рабочее соединение.
Проверьте реализацию, сообщения диагностики, signaling, создание/открытие канала и завершение на целевой платформе. CreateOffer не создаёт signaling-сервис; SDP/ICE передаются между нужными участниками отдельно. Connected WebRTC в приведённом Windows-стенде не проверен.
Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.
Конструкторы1
WebRtcPeerConnectionКонструктор
public WebRtcPeerConnection();Методы12
AddIceCandidateError
public Error AddIceCandidate(string media, int index, string name);Передаёт удалённый ICE candidate реализации. Свяжите его с правильной signaling-сессией и готовностью удалённого описания.
| Имя | Тип | По умолчанию |
|---|---|---|
media | string | — |
index | int | — |
name | string | — |
ErrorClosevoid
public void Close();Закройте одноранговое соединение и все каналы данных, связанные с ним.
Примечание: Вы не сможете повторно использовать этот объект для нового соединения, если не вызовете WebRtcPeerConnection.Initialize.
CreateDataChannelWebRtcDataChannel
public WebRtcDataChannel CreateDataChannel(string label, Reckfell.Collections.Dictionary options = null);Создаёт канал через реализацию. На инициаторе создавайте нужный канал до offer; доступность объекта не равна открытому каналу для передачи.
| Имя | Тип | По умолчанию |
|---|---|---|
label | string | — |
options | Reckfell.Collections.Dictionary | null |
WebRtcDataChannelCreateOfferError
public Error CreateOffer();Просит реализацию создать SDP offer; результат приходит через SessionDescriptionCreated. Signaling-сервис и передачу данных другому участнику задаёт приложение.
ErrorGetConnectionStateWebRtcPeerConnection.ConnectionState
public WebRtcPeerConnection.ConnectionState GetConnectionState();Возвращает состояние соединения.
WebRtcPeerConnection.ConnectionStateGetGatheringStateWebRtcPeerConnection.GatheringState
public WebRtcPeerConnection.GatheringState GetGatheringState();Возвращает ICE WebRtcPeerConnection.GatheringState соединения. Это позволяет определить, например, когда сбор кандидатов ICE завершен.
WebRtcPeerConnection.GatheringStateGetSignalingStateWebRtcPeerConnection.SignalingState
public WebRtcPeerConnection.SignalingState GetSignalingState();Возвращает состояние сигнализации на локальном конце соединения при подключении или повторном подключении к другому одноранговому узлу.
WebRtcPeerConnection.SignalingStateInitializeError
public Error Initialize(Reckfell.Collections.Dictionary configuration = null);Передаёт конфигурацию выбранной реализации. На пустом Extension нулевой результат не доказывает реализацию: проверяйте required-virtual диагностику и реальный обмен.
| Имя | Тип | По умолчанию |
|---|---|---|
configuration | Reckfell.Collections.Dictionary | null |
ErrorPollError
public Error Poll();Чаще вызывайте этот метод (например, в Entity._Process или Entity._PhysicsProcess) для правильного приема сигналов.
ErrorSetDefaultExtensionvoid
public static void SetDefaultExtension(StringName extensionClass);Выбирает зарегистрированную реализацию, наследующую нужный Extension-класс. Не скачивает библиотеку и не подтверждает её совместимость/работоспособность.
| Имя | Тип | По умолчанию |
|---|---|---|
extensionClass | StringName | — |
SetLocalDescriptionError
public Error SetLocalDescription(string type, string sdp);Устанавливает описание SDP локального однорангового узла. Это должно быть вызвано в ответ на WebRtcPeerConnection.SessionDescriptionCreated.
После вызова этой функции одноранговый узел начнет выдавать WebRtcPeerConnection.IceCandidateCreated (если только не будет возвращено Error, отличное от OK).
| Имя | Тип | По умолчанию |
|---|---|---|
type | string | — |
sdp | string | — |
ErrorSetRemoteDescriptionError
public Error SetRemoteDescription(string type, string sdp);Устанавливает описание SDP удаленного пира. Это должно быть вызвано со значениями, сгенерированными удаленным пиром и полученными через сервер сигнализации.
Если type — "offer", то пир выдаст WebRtcPeerConnection.SessionDescriptionCreated с соответствующим ответом.
Если type — "answer", то пир начнет выдавать WebRtcPeerConnection.IceCandidateCreated.
| Имя | Тип | По умолчанию |
|---|---|---|
type | string | — |
sdp | string | — |
ErrorСигналы и события3
DataChannelReceivedСобытие
public event WebRtcPeerConnection.DataChannelReceivedEventHandler DataChannelReceived;Выдается при получении нового внутриполосного канала, т. е. когда канал был создан с negotiated: false (по умолчанию).
Объект будет экземпляром WebRtcDataChannel. Вы должны сохранить ссылку на него, иначе он будет автоматически закрыт. См. WebRtcPeerConnection.CreateDataChannel.
| Имя | Тип | По умолчанию |
|---|---|---|
channel | WebRtcDataChannel | — |
IceCandidateCreatedСобытие
public event WebRtcPeerConnection.IceCandidateCreatedEventHandler IceCandidateCreated;Выдается при создании нового кандидата ICE. Три параметра предназначены для передачи удаленному пиру через сигнальный сервер.
| Имя | Тип | По умолчанию |
|---|---|---|
media | string | — |
index | long | — |
name | string | — |
SessionDescriptionCreatedСобытие
public event WebRtcPeerConnection.SessionDescriptionCreatedEventHandler SessionDescriptionCreated;Выдается после успешного вызова WebRtcPeerConnection.CreateOffer или WebRtcPeerConnection.SetRemoteDescription (когда он генерирует ответ). Параметры должны быть переданы WebRtcPeerConnection.SetLocalDescription на этом объекте и отправлены удаленному пиру через сервер сигнализации.
| Имя | Тип | По умолчанию |
|---|---|---|
type | string | — |
sdp | string | — |
WebRtcPeerConnection.ConnectionState
| Значение | Описание |
|---|---|
Closed = 5 | Соединение с одноранговым узлом закрыто (например, после вызова |
Connected = 2 | Узел подключен, все транспорты ICE подключены. |
Connecting = 1 | Узел подключается, ICE выполняется, ни один из транспортов не дал сбоев. |
Disconnected = 3 | По крайней мере один транспорт ICE отключен. |
Failed = 4 | Один или несколько транспортов ICE вышли из строя. |
New = 0 | Новое соединение , каналы передачи данных и предложение могут быть созданы в этом состоянии. |
WebRtcPeerConnection.GatheringState
| Значение | Описание |
|---|---|
Complete = 2 | Агент ICE завершил сбор кандидатов. Если произойдет что-то, требующее сбора новых кандидатов, например, добавление нового интерфейса или добавление нового сервера ICE, состояние вернется к сбору, чтобы собрать этих кандидатов. |
Gathering = 1 | Агент ICE находится в процессе сбора кандидатов на подключение. |
New = 0 | Соединение между одноранговыми узлами было только что создано и еще не выполняло никаких сетевых операций. |
WebRtcPeerConnection.SignalingState
| Значение | Описание |
|---|---|
Closed = 5 | :: |
HaveLocalOffer = 1 | Локальный узел вызвал |
HaveLocalPranswer = 3 | Предложение, отправленное удаленным пиром, было применено, и ответ был создан и применен путем вызова |
HaveRemoteOffer = 2 | Удаленный узел создал предложение и использовал сервер сигнализации для его доставки локальному узлу, который установил предложение в качестве удаленного описания, вызвав |
HaveRemotePranswer = 4 | Предварительный ответ был получен и успешно применен в ответ на предложение, ранее отправленное и установленное путем вызова |
Stable = 0 | Не происходит никакого текущего обмена предложением и ответом. Это может означать, что |