Jos*_*ala 5 javascript node.js socket.io webrtc
我即将使用 webRTC+socket.io+node.js 构建一个视频会议系统,所以我已经阅读了 Simon Pietro Romano 的《Real Timecommunications with webRTC》这本书作为起点,我已经读完了,我要跑了这个系统超过 100 Mbps 本地网络,所以我将使用网状网络拓扑,因为带宽在这里不是问题,我不想关注这个,我只是有一个关于与许多用户合作的简单问题,特别是关于使用这些功能:
var pc // PeerConnection Object
pc.onaddstream = ...//for receiving stream from remote party
pc.setRemoteDescription()...//for setting .sdp file from remote party
Run Code Online (Sandbox Code Playgroud)
我知道我必须在每个对等点上建立点对点连接,但是假设我有 3 个用户:A、B 和 C。
A 将成为房间发起者,然后 B 加入房间,这里 A 向 B 发送报价并收到 B 的答复,A setRemoteDescription(answerB) 和 B setRemoteDescription(offerA),但是当 C 加入房间时,A 和 B将是它的发起者,所以他们都会向 C 发送报价,C 将向他们发送答案,这是我的困惑:
当 C 第一次收到 A 的报价时,这是 C setRemoteDescription(offerA),但是当收到 B 的报价时,这是 C setRemoteDescription(offerB),我在这里设置了一个新值并丢失了 A 的先前报价,这个过程只是临时?,是不是 C 不再需要 A 报价了?,我知道这个 sdp 文件只包含 webbrowser 媒体信息。我对 onaddstream 有同样的疑问,这个过程是否会自动从一个对等点然后从另一个对等点捕获流?,当最后一个加入房间时,A 首先捕获 B 的流,然后从 C 捕获第二个流?,当捕获 C 时,A 是否会丢失 B 的流?.
另一方面,addIceCandidate 只是将远程候选者添加到每个对等点,所以本地对等点拥有远程对等点路由,它永远不会丢失远程对等点路由,我想,我对吗?
我找到了关于 webRTC 视频会议的源代码,我看到 onaddstream 和 setRemoteDescription 就像临时功能一样,一旦设置了对等点之间的连接,那些就不再需要了,我不知道,也许我错了。
提前致谢。
当 C 第一次收到 A 的报价时,这是 C setRemoteDescription(offerA),但是当收到 B 的报价时,这是 C setRemoteDescription(offerB),我在这里设置了一个新值并丢失了 A 的先前报价,这个过程只是临时的?,C 是不是不再需要 A 的报价了?
pc每个其他参与者都需要在客户端有一个对等连接 ( ),您将执行类似以下操作:
socket.on('offer', function(from, data) {
users[from].pc.setRemoteDescription(new RTCSessionDescription(data));
// create answer..
});
Run Code Online (Sandbox Code Playgroud)
请注意,节点服务器正在发送报价以及发送它的用户的 ID。此外,users将包含每个房间参与者的条目,并引用其pc. 您将为每个参与者添加远程描述到他们自己的pc.
互联网上有很多例子,我的在http://github.com/jconde/ephony :)
| 归档时间: |
|
| 查看次数: |
1960 次 |
| 最近记录: |