我目前正在一个项目中工作,该项目正在尝试为旧游戏Supreme Commander构建通信适配器。此通信适配器使用本机webrtc。该项目是Forged Alliance Forever,这是通信适配器的存储库:github.com/FAForever/ice-adapter
通信适配器当前正在使用加密通信,但是我们想禁用加密。在有很多参与者的游戏中,上传带宽是一个限制因素,DTLS增加了每条消息的开销。这些消息的大小大约为20-50字节。因此,DTLS标头和填充的开销很大。
所以这是一个问题: 是否可以使用本地webrtc版本68禁用PeerConnection数据通道的加密?
如果是,怎么办?你有一个简单的例子吗?
我尝试了以下操作(对代码段感到抱歉):
在以下选项中创建PeerConnectionFactory并禁用加密:
_pcfactory = webrtc::CreateModularPeerConnectionFactory(nullptr, nullptr, nullptr, nullptr, nullptr, nullptr);
webrtc::PeerConnectionFactoryInterface::Options webRtcOptions;
webRtcOptions.disable_encryption = true;
_pcfactory->SetOptions(webRtcOptions);
使用启用rtp数据通道创建PeerConnection:
webrtc::PeerConnectionInterface::RTCConfiguration configuration;
configuration.servers = _iceServerList;
configuration.enable_rtp_data_channel = true;
_peerConnection = _pcfactory->CreatePeerConnection(configuration,nullptr, nullptr, _peerConnectionObserverObj);
到目前为止,这是我测试过的。现在的问题是,应答方在channel.cc中产生中止,所以也许我没有正确使用该接口。你有什么建议吗?
致谢
答案 0 :(得分:0)
创建对等连接时,可以将DtlsSrtpKeyAgreement
约束设置为false。但是,此选项可能很快会从库中删除,请参见https://bugs.chromium.org/p/chromium/issues/detail?id=804275
但是必要的代码更改仍然会保留在git中,因此您可以通过在编译库之前还原更改来重新启用该选项。