我将要使用webRTC + socket.io + node.js构建一个视频 session 系统,因此,我已经阅读了这本书作为西蒙·彼得罗·罗曼诺(Simon Pietro Romano)的起点“与webRTC进行实时通信”,我已经读完了,我要运行该系统通过100 Mbps的本地网络运行,所以我将使用网状网络拓扑,因为带宽在这里不成问题,我不想关注这个问题,我只想与许多用户合作,特别是在使用时会遇到一个简单的问题。这些功能:

var pc // PeerConnection Object

pc.onaddstream = ...//for receiving stream from remote party
pc.setRemoteDescription()...//for setting .sdp file from remote party

我知道我必须在每个对等方之间建立对等连接,但让我们假设我有3个用户:A,B和C。

A将成为房间发起人,然后B加入房间,这里A向B发送要约并从B收到答案,即setRemoteDescription(answerB)和B setRemoteDescription(offA),但是当C加入房间时,A和B将是其发起者,因此他们两个都将向C发送要约,而C将向他们发送答案,这是我的困惑:

当C首次从A收到要约时,这是C setRemoteDescription(offerA),但是当从B收到要约时,这是C setRemoteDescription(offerB),我在这里设置一个新值并丢失了A的先前要约,这个过程仅仅是是临时的吗?C不再需要A报价了吗?,我知道这个sdp文件仅包含网络浏览器媒体信息。我对onaddstream也有相同的疑问,此过程是否会自动从一个对等方然后从另一个对等方捕获流?,A首先捕获B的流,而最后一个加入房间时从C捕获第二个流?,A捕获C的流时是否丢失了B的流?

另一方面,addIceCandidate只是将远程候选者添加到每个对等方,因此本地对等方具有远程对等方路由,它永远不会丢失远程对等方路由,我想,对吗?

我找到了有关webRTC视频 session 的源代码,并且我发现onaddstream和setRemoteDescription就像临时功能一样,一旦对等体之间的连接被设置,它们就不再是必需的了,我不知道,也许我错了。

提前致谢。

最佳答案



您需要在客户端与每个其他参与者建立对等连接(pc),您将执行以下操作:

socket.on('offer', function(from, data) {
    users[from].pc.setRemoteDescription(new RTCSessionDescription(data));
    // create answer..
});

请注意, Node 服务器正在发送报价以及正在发送报价的用户的ID。同样,users将包含每个参加者的条目,并引用其pc。您将把每个参与者的远程描述添加到他们自己的pc中。

互联网上有很多例子,我的是http://github.com/jconde/euphony :)

关于javascript - WebRTC视频 session (多对多),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33601949/

10-08 22:55