При попытке установить и канал данных WebRTC с использованием API Objective C я не могу получить какие-либо из обратных вызовов RTCDataChannelDelegate для фактического захвата. Кажется, что все хорошо подходит для однорангового соединения, но я добираюсь до точки, где поток одноранговых соединений был успешно добавлен.Канал данных WebRTC не подключен или вызываемые обратные вызовы
Мои шаги грубо:
Создать предложение:
_channel = [_connection createDataChannelWithLabel: @"offer-1"
config: [[RTCDataChannelInit alloc] init]];
_channel.delegate = _stateMachine;
[_connection createOfferWithDelegate: _stateMachine constraints: [[RTCMediaConstraints alloc] init]];
СДП клиента 1 посылается клиенту 2, где создается ответ:
[_connection setRemoteDescriptionWithDelegate: _stateMachine sessionDescription: [[RTCSessionDescription alloc] initWithType: @"offer" sdp: sdp]];
[_connection createAnswerWithDelegate: _stateMachine constraints: [[RTCMediaConstraints alloc] init]];
СДП клиента 2 отправляется обратно клиенту 1:
[_connection setRemoteDescriptionWithDelegate: _stateMachine sessionDescription: [[RTCSessionDescription alloc] initWithType: @"answer" sdp: sdp]];
После этого я получаю поток мультимедиа, добавляемый с устойчивой сигнализацией. Раньше, во время моего POC, мне удалось получить обратные вызовы канала данных, но я не совсем уверен, что мне здесь не хватает.
Вот равноправные настройки соединения:
RTCPeerConnectionFactory* _cfactory = [[RTCPeerConnectionFactory alloc] init];
NSArray* mandatory = @[
[[RTCPair alloc] initWithKey:@"DtlsSrtpKeyAgreement" value:@"true"],
[[RTCPair alloc] initWithKey:@"internalSctpDataChannels" value:@"true"],
];
RTCMediaConstraints* pcConstraints = [[RTCMediaConstraints alloc] initWithMandatoryConstraints: mandatory
optionalConstraints: nil];
RTCICEServer* server = [[RTCICEServer alloc] initWithURI:[NSURL URLWithString:@"stun:stun.l.google.com:19302"]
username: @""
password: @""];
NSArray* servers = @[server];
_connection = [_cfactory peerConnectionWithICEServers: servers
constraints: pcConstraints
delegate: _stateMachine];
Мое состояние машина реализует следующую со всеми методами настоящими:
@protocol DelegateAggregator
<RTCPeerConnectionDelegate, RTCSessionDescriptionDelegate, RTCDataChannelDelegate, RTCStatsDelegate>
@end
Есть ли что-то я здесь отсутствую? Кажется, канал устанавливается и добавляется медиа-поток (мне нужны только данные), но без каких-либо обратных вызовов. Могу ли я активировать больше записей? Любая помощь приветствуется!
Похоже, я получаю тот же результат, независимо от того, находятся они в факультативном или требуемом. Я обновил мою версию webrtc до 7700 и создаю https://github.com/pristineio/webrtc-build-scripts, который должен компилироваться с помощью макроса HAVE_SCTP. Есть ли способ, чтобы я включил больше протоколов, чтобы добраться до сути? – Zack
Получаю ответ от моего клиента-клиента, и я получаю только следующие строки: 2014-11-14 22: 47: 49.908 Удаленное [52330: 4141871] изменение состояния peerConnection., 0 2014-11-14 22: 47: 49.908 Удаленно [52330: 4141871] задайте описание сеанса с ошибкой. , (null) 2014-11-14 22:47:51.508 Удалено [52330: 4141871] смена льда. , 2 –
Zack
Если вы создаете WebRTC с включенной отладкой, вы должны получить намного больше отладочного вывода – iain