我将使用webRTC+socket.io+node.js构建视频会议系统,因此我已经阅读了Simon Pietro Romano的《使用webRTC进行实时通信》作为起点。我已经完成了阅读,我将在一个100 Mbps的本地网络上运行此系统,因此我将使用网状网络拓扑结构,因为带宽不是问题,我不想关注这个,我只有一个简单的问题:如何处理多个用户,特别是使用以下函数:
我知道我需要在每个节点上建立点对点连接,但是假设有三个用户:A、B和C。
A将成为房间的发起者,然后B加入房间,在这里A向B发送一个offer,并从B接收一个answer,A setRemoteDescription(answerB)并且B setRemoteDescription(offerA),但是当C加入房间时,A和B将成为它的发起者,因此他们两个都会向C发送offer,并且C将向他们发送answer,这里是我的困惑:
当C首先从A处收到offer时,这是C setRemoteDescription(offerA),但是当从B处收到offer时,这是C setRemoteDescription(offerB),我在这里设置了一个新值并失去了以前从A得到的offer,这个过程只是暂时的吗?C不再需要来自A的offer了吗?我知道这个SDP文件只包含Web浏览器媒体信息。我对onaddstream也有同样的疑问,这个过程会自动捕获一个节点的流,然后从另一个节点捕获流吗?A首先捕获B的流,然后在最后一个节点C加入房间时从C中捕获?当捕获C的流时,A会失去B的流吗?
另一方面,addIceCandidate只是将远程候选项添加到每个节点中,因此本地节点具有远程节点的路由,它永远不会失去远程节点的路由,我认为,我是对的吗?
我已经找到了关于WebRTC视频会议的源代码,并且我已经看到onaddstream和setRemoteDescription就像是临时函数一样,一旦节点之间的连接建立,它们就不再需要了,但我不确定,也许我错了。
提前致谢。
var pc // PeerConnection Object
pc.onaddstream = ...//for receiving stream from remote party
pc.setRemoteDescription()...//for setting .sdp file from remote party
我知道我需要在每个节点上建立点对点连接,但是假设有三个用户:A、B和C。
A将成为房间的发起者,然后B加入房间,在这里A向B发送一个offer,并从B接收一个answer,A setRemoteDescription(answerB)并且B setRemoteDescription(offerA),但是当C加入房间时,A和B将成为它的发起者,因此他们两个都会向C发送offer,并且C将向他们发送answer,这里是我的困惑:
当C首先从A处收到offer时,这是C setRemoteDescription(offerA),但是当从B处收到offer时,这是C setRemoteDescription(offerB),我在这里设置了一个新值并失去了以前从A得到的offer,这个过程只是暂时的吗?C不再需要来自A的offer了吗?我知道这个SDP文件只包含Web浏览器媒体信息。我对onaddstream也有同样的疑问,这个过程会自动捕获一个节点的流,然后从另一个节点捕获流吗?A首先捕获B的流,然后在最后一个节点C加入房间时从C中捕获?当捕获C的流时,A会失去B的流吗?
另一方面,addIceCandidate只是将远程候选项添加到每个节点中,因此本地节点具有远程节点的路由,它永远不会失去远程节点的路由,我认为,我是对的吗?
我已经找到了关于WebRTC视频会议的源代码,并且我已经看到onaddstream和setRemoteDescription就像是临时函数一样,一旦节点之间的连接建立,它们就不再需要了,但我不确定,也许我错了。
提前致谢。
PeerConnection
еҜ№иұЎпјҢдҪ йңҖиҰҒдёәжҜҸдёӘе‘јеҸ«йғҪеҲӣе»әдёҖдёӘеҜ№иұЎ... - mido