首页 文章

强制Web for WebRTC PeerConnections

提问于
浏览
4

是否可以强制与WebRTC Build TCP隧道(TLS)连接?

我们正在为我们的业务开发WebRTC应用程序,但是我们遇到了由内部网络引起的传入UDP流的一些主要问题 . 我们已经在使用TURN服务器,我们正在获得一堆ICE候选者(甚至是中继UDP的候选者) .

正如我上面所说的那样,我们传入的UDP流量在这里不可靠(口吃,非常糟糕的图像质量,非常低的fps) . 这足以给浏览器留下印象,WebRTC可以将它用于它的PeerConnection,但实际结果在UDP上非常糟糕 .

如果我阻止所有传出和传入的UDP流,我可以看到(在Wireshark中)WebRTC通过使用我们的转向服务器回退到TCP流量 .

通过TCP连接,我们获得了非常好的结果(具有高帧速率和非常好的图像质量) .

我已经尝试了几种强制TCP的东西:

  • 我删除了m = video行中的UDP部分

m =视频TLS / RTP / SAVPF 100 116 117 96

  • 我从候选列表中排除了每一个UDP候选者

在每种情况下,我甚至都无法 Build 连接 .

我可以做些什么来强制WebRTC中的TCP,还是我们真的完全依赖浏览器?

2 回答

  • 4

    使用TURN / TCP服务器配置对等连接,并将iceTransports约束设置为中继 . 请参阅http://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/请注意,质量通常比UDP更差 .

    浏览器到浏览器的连接不支持ICE-TCP . 只有你有SFU / MCU /网关的东西 .

  • 2

    由于不支持ICE-TCP,因此无法获得TCP中继候选者,但对于RFC-5766,客户端和TURN服务器之间存在TCP控制连接的回退机制 . 这需要TCP TURN服务器支持这种回退机制,根据这种机制,客户端将使用TCP传输协议与TURN服务器连接,并且作为分配请求的一部分,它将请求UDP候选,因此该信道类似于TCP-UDP . 因此,如果对等体做同样的事情并且你强制发生Relay-Relay连接,那么两个客户端都将使用TCP连接到TURN服务器 . 如果没有配置UDP和TCP TURN服务器但是TLS是,则该回退机制也支持TLS连接 .

相关问题