通过TCP的WebRTC媒体?

sur*_*mar 3 media tcp webrtc turn server

我是WebRTC的新手。

我了解到转弯服务器。

下面的内容用于为Webrtc应用程序配置Turn Server在TCP上运行。

在webrtc应用程序中打开服务器配置示例:-

{

       url: ‘turn:192.158.29.39:3478?transport=tcp’,  
       credential: ‘JZEOEt2V3Qb0y27GRntt2u2PAYA=’,
       username: ‘28224511:1379330808?

}
Run Code Online (Sandbox Code Playgroud)

?transport = tcp的含义是它可以像他们所说的那样在TCP协议上工作。

我的问题是

轮流服务器基于TCP方式工作,它仅用于在其上基于TCP的轮流服务器之间建立连接,或者用于通过使用TCP协议的轮流服务器传输WebRTC媒体。TCP数据包用于哪个目的?

是否可以通过TCP数据包传输WebRTC媒体?

Aja*_*jay 5

不建议通过TCP强制WebRTC媒体,它只是严格防火墙的后备选项。

如果您?transport=tcp在TURN网址中指定,则WebRTC客户端将通过TCP连接到TURN服务器。
客户端将通过TCP发送STUN请求以分配中继候选者(据我所知,目前chrome / firefox仅请求UDP中继候选者)。

要通过TURN服务器强制执行严格的TCP:

  • 仅将TURN网址与 ?transport=tcp
  • 指定iceTransportPolicy:"relay",以便所有媒体都将通过TURN传输

在peerConnections之间交换中继候选者(udp)之后,媒体路径将如下所示

P1 <-TCP-> P1TURN <-UDP-> P2TURN <-TCP-> P2

如果P1TURN和P2TURN始终相同,则可以选择TURN中继路径作为LAN / lo接口,即您将获得具有LAN / lo IP的UDP中继候选者。

如果要避免在媒体路径中使用UDP和两次TURN,则需要使用一些SFU / SVC,例如Jitsi(支持伪SSL候选)/ Janus
然后媒体路径如下

P1 <-TCP-> SFU / MCU <-TCP-> P2