WebRTC中的“中继传输地址”能否与多个对等方共享?

3

场景:Webrtcpeer1想向Webrtcpeer2发送视频(仅发送数据)。结果发现webrtcpeer2身后是对称NAT,因此直接通信不可行。现在,两个对等方联系一个转换服务器,并获取各自的“传输地址”并将其与其NAT“服务器反射传输地址”作为ICE候选项一起通过信令通道共享。现在,Webrtcpeer3进入场景,希望看到与Webrtcpeer2共享的相同视频源。结果发现webrtcpeer3也处于对称NAT之后。

  1. WebRTC堆栈是否会为webrtcpeer1分配新的“传输地址”以与webrtcpeer3通信?还是webrtcpeer1可以使用连接webrtcpeer2时收到的现有“传输地址”。

  2. 答:WebRTC堆栈不需要为webrtcpeer1分配新的“传输地址”,它可以使用连接webrtcpeer2时获得的现有“传输地址”进行通信。
  3. TURN是否支持这种方式?--> webrtcpeer1向转换服务器发送单个视频源(以及webrtcpeer2和3的“传输地址”信息),然后转换服务器以某种神奇的方式将其发送到webrtcpeer2和webrtcpeer3的相应“传输地址”。

  4. 答:是的,TURN支持这样的方式。webrtcpeer1可以将视频流发送到TURN服务器,TURN服务器将视频流转发到webrtcpeer2和webrtcpeer3的“传输地址”。
1个回答

2

1.) 每个节点都需要一个新的Relayed Transport Address。你需要为每个你想要连接的人创建一个新的PeerConnection。webrtcpeer1只能与webrtcpeer2相连。你需要在与webrtcpeer1相同的主机上创建webrtcpeer1-1()以便与webrtcpeer3进行通信。

2.) 不幸的是,TURN不支持该功能。但是,SFU(Selective Forwarding Unit)可以实现这一目标!


但是,如果对等方位于对称NAT后面,SFU无法解决此问题,因为对等方到SFU的连接也是webrtc。 - Mukesh Kumar
1
SFU不会阻止客户端连接到公共IP,同时SFU可以从客户端发送数据的IP地址回传数据,这适用于对称NAT。 - Philipp Hancke

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接