В чем разница между предложением и ответом WebRT C? - PullRequest
0 голосов
/ 06 августа 2020

Я пытаюсь добавить функцию аудио / видео чата с помощью WebRT C в существующее приложение текстового чата. Участники комнаты чата уже общаются, но когда они решают, что им нужно аудио / видео, они нажимают кнопку, чтобы начать аудио / видео. Какой бы клиент ни нажимал кнопку, я вызываю myPeerConnection.createOffer().then(function(offer){setLocalDescription(offer)}, а затем отправляю offer (JSON .stringified) на сервер вместе с clientID. Через X секунд я отключаю кнопку для присоединения к аудио / видео чату, отправляю уведомление на сервер, чтобы разослать все offers участникам. На этом этапе все клиенты, желающие присоединиться к аудио / видеочату, имеют полный набор SDP от всех остальных пиров.

Мой вопрос: нужно ли мне отправлять ответы на каждое предложение от каждого клиента? Насколько я понимаю, SDP описывает возможности клиента для обработки аудио / видео. Могу ли я использовать предложения SDP от других для setRemoteDescription(SDP)? Все примеры, руководства, вопросы и сообщения, с которыми я сталкивался, используют парадигму предложения / ответа, и ни один из них не говорит о том, в чем разница между предложением и ответом. Любая информация или указатели приветствуются.

Вот сегмент кода jsFiddle , упрощенный из моего кода. Пожалуйста, взгляните на вывод консоли, который не показывает ничего, кроме мультимедийных возможностей. Вся информация ICE и сетевая информация, которая может различать guish SDP, поступает после обмена этим предложением SDP и ответом, так что это еще не часть этого обмена предложениями (и ответами), осуществляемого через канал сигнализации.

PS: Строго говоря, в моем сценарии нет инициатора или отправителя, запускающего канал. Все участники равны. Их невозможно определить или упорядочить. Когда возможности и сетевая информация обмениваются должным образом, они запускают аудио / видеочат.

1 Ответ

0 голосов
/ 06 августа 2020

SDP содержит некоторые элементы, одинаковые для всех участников, например поддерживаемые кодеки. Существуют и другие элементы (или, скорее, строки), которые c указаны для экземпляра однорангового соединения. В частности, ледяные кандидаты (ip / port) и ice-ufrag / ice-pwd. Они не могут быть разделены между одноранговыми соединениями.

(отчасти это детали реализации; см. Webrt c временная группа разветвления слайды встречи / запись при разветвлении льда)

...