【问题标题】:Can I re-use an "offer" in WebRTC for mulitple connections?我可以在 WebRTC 中为多个连接重复使用“报价”吗?
【发布时间】:2023-03-22 06:31:01
【问题描述】:

我开始学习 WebRTC 并在此处使用复制/粘贴有一个工作原型:https://github.com/aerik/webrtc(该原型旨在在两个浏览器窗口中运行,与许多其他在一个窗口中同时运行两侧的示例不同)

我了解 WebRTC 是点对点,我需要为每组对等点建立连接。但是,我开始考虑信号(还没有代码),我想知道“报价”。在我的原型中,我看到多次单击“创建报价”会产生相同的字符串。因此,如果有客户端 A,并连接到客户端 B 和 C,看起来我将向他们发送相同的“报价”。如果那是正确的,那么发出信号的第一步就很容易了 - 客户端 A 将始终提供相同的报价,而我只需要收集来自连接的对等方的响应。

这是正确的理解吗?

【问题讨论】:

    标签: javascript webrtc


    【解决方案1】:

    不是这样,对等连接会为不同的报价生成不同的原始值(SDP 中的o=)。

    相同的对等连接提议将包含相同的<sess-id>,但不同的<sess-version>。

    不同的peer连接会产生不同的<sess-id>

    您可以在 Chrome 中使用以下 sn-p 进行检查:

    var a = new webkitRTCPeerConnection({});
    a.createOffer().then(offer => $('#11').text(offer.sdp));
    a.createOffer().then(offer => $('#12').text(offer.sdp));
    var b = new webkitRTCPeerConnection({});
    b.createOffer().then(offer => $('#21').text(offer.sdp));
    b.createOffer().then(offer => $('#22').text(offer.sdp));
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    First PC, first offer: <span id="11"></span><br/>
    First PC, second offer: <span id="12"></span><br/>
    Second PC, first offer: <span id="21"></span><br/>
    Second PC, second offer: <span id="22"></span><br/>

    你可以在https://datatracker.ietf.org/doc/html/rfc4566#page-11找到更多关于SDP的信息

    【讨论】:

    • 附带说明,您可以为相同的对等连接重复使用该优惠。如果连接以某种方式无法完成,您可以使用相同的 peerconnection + offer 重试,只是不要混合来自不同 peerconnection 的 offer。
    • @Javier 如果我在一个数组中有 n 个用户,那么我必须遍历该数组并创建 n 次报价并发送给每个用户?
    • @DragonBorn 确切地说,您将不得不对每个用户进行独立调用,尽管您将在同一个窗口中渲染所有视频流,因此感觉就像是单个调用。随意看看github.com/jconde/euphony,我在那里为多用户 WebRTC 房间实现了一个平台。
    猜你喜欢
    • 2012-11-28
    • 1970-01-01
    • 1970-01-01
    • 2011-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-28
    • 2012-07-17
    相关资源
    最近更新 更多