2017-06-19 62 views
2

我是WebRTC的新手。通过tcp的Webrtc媒体?

我了解到转动服务器。

下面的东西用于配置转发服务器在webrtc应用程序的TCP上工作。在WebRTC应用

实施例转弯服务器配置: - ?

{ 

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

} 

用于运输= TCP的含义是它可以作用于TCP协议一样,他们说。

我的问题是,

TURN服务器工作在TCP意味着,它只是建立在TCP它的工作原理反过来服务器之间的连接或转移通过转服务器,它使用了TCP协议的WebRTC媒体。为什么使用TCP数据包?

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

回答

2

不推荐使用TCP强制WebRTC媒体,它只是严格防火墙的后备选项。

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

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

  • 只能使用方法打开URL与?transport=tcp
  • 指定iceTransportPolicy:"relay",使所有媒体将通过TURN

流交换中继后候选人(udp)之间peerConnections,媒体路径将如下

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