Родной Webrtc, как отключить шифрование для DataChannel PeerConnection - PullRequest
0 голосов
/ 13 сентября 2018

Я сейчас работаю над проектом, который пытается создать коммуникационный адаптер для старой игры Supreme Commander. Этот адаптер связи использует родной webrtc. Проект Forged Alliance Forever, это репозиторий для коммуникационного адаптера: github.com/FAForever/ice-adapter

Адаптер связи в настоящее время работает с зашифрованной связью, но мы хотели бы отключить шифрование. Пропускная способность загрузки является ограничивающим фактором в играх с большим количеством участников, и DTLS добавляет издержки к каждому сообщению. Эти сообщения имеют небольшой размер около 20-50 байтов. Следовательно, издержки заголовка и заполнения DTLS являются значительными.

Итак, вот вопрос: Можно ли отключить шифрование для DataChannel PeerConnection, используя собственный выпуск 68 webrtc?

Если так, то как? У вас есть минимальный пример?

Я пробовал следующие вещи (извините за фрагменты кода):

Создать PeerConnectionFactory и отключить шифрование в опциях:

_pcfactory = webrtc::CreateModularPeerConnectionFactory(nullptr, nullptr, nullptr, nullptr, nullptr, nullptr);
webrtc::PeerConnectionFactoryInterface::Options webRtcOptions;
webRtcOptions.disable_encryption = true;
_pcfactory->SetOptions(webRtcOptions);

Создайте PeerConnection с включенным каналом передачи данных rtp:

webrtc::PeerConnectionInterface::RTCConfiguration configuration;
configuration.servers = _iceServerList;
configuration.enable_rtp_data_channel = true;
_peerConnection = _pcfactory->CreatePeerConnection(configuration,nullptr, nullptr, _peerConnectionObserverObj);

Это то, что я проверял. Проблема сейчас в том, что сторона, отвечающая на запрос, производит прерывание в channel.cc, поэтому, возможно, я неправильно использовал интерфейс. У вас есть предложения?

Привет

1 Ответ

0 голосов
/ 15 сентября 2018

Вы можете установить для ограничения DtlsSrtpKeyAgreement значение false при создании однорангового соединения. Однако, эта опция может быть скоро удалена из библиотеки, см. https://bugs.chromium.org/p/chromium/issues/detail?id=804275

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

...