WebRTC,ice连接

WebRTC,ice连接,webrtc,Webrtc,我正在尝试学习如何在应用程序中使用,因此我在以下链接中编写了一个代码示例: 一开始,我需要说的是,我不关心浏览器的兼容性,我所需要的只是在没有任何外部适配器/其他库的情况下支持ChromiumWeb引擎 web应用程序应该允许我在同一主机上运行的两个浏览器选项卡之间建立连接—通过手动交换适当的数据(和候选数据) 应采取的步骤: 点击“创建报价按钮”,复制本地SDP 转到其他选项卡,将先前复制的SDP插入“远程SDP”区域,然后按“创建应答” 复制生成的本地SDP,进入第一个选项卡,插入“远程SD

我正在尝试学习如何在应用程序中使用,因此我在以下链接中编写了一个代码示例:

一开始,我需要说的是,我不关心浏览器的兼容性,我所需要的只是在没有任何外部适配器/其他库的情况下支持ChromiumWeb引擎

web应用程序应该允许我在同一主机上运行的两个浏览器选项卡之间建立连接—通过手动交换适当的数据(和候选数据)

应采取的步骤:

  • 点击“创建报价按钮”,复制本地SDP
  • 转到其他选项卡,将先前复制的SDP插入“远程SDP”区域,然后按“创建应答”
  • 复制生成的本地SDP,进入第一个选项卡,插入“远程SDP”区域,点击“设置远程SDP”按钮(非创建应答按钮)
  • 交换ice候选者-从一个选项卡复制它们,插入到第二个选项卡,然后按“添加候选者”按钮。用另一种方式做同样的事情
  • 主要问题是此功能:

    peer.iceconnectionstatechange = function(event) {
        console.log("ice connection state: " + peer.iceConnectionState)
    }
    
    不会被触发。我尝试使用服务器,但没有成功。远程视频无法运行。如果有人能指出我的错误在哪里?

    试试我的(剪切粘贴):

    或自动(本地存储):

    ICE候选者会随着时间的推移被添加到本地报价/答案中,因此它只需等待候选者的结束,然后生成嵌入所有候选者的SDP


    应能在所有浏览器中工作。

    创建答案按钮按照您的步骤不起任何作用?是的,
    创建答案按钮接受从第一个选项卡复制的报价人sdp。它尝试将其设置为远程描述符,然后在第一个选项卡(步骤2和步骤3)中创建一个答案,该答案必须用作远程sdp。您使用的TURN服务器可能来自某个教程,声称您可以使用这些凭据,对吗?这些凭证不起作用,因为没有人会让你免费访问他们的TURN服务器。尝试这些凭据,您会发现没有任何type=relay的候选项。您可以指向任何文档,其中解释了按顺序生成ICE候选项、SDP等的最佳实践?@Sam您是指浏览器实现吗?浏览器负责生成ICE候选项,只要
    setLocalDescription
    成功(步骤3.2.6.)。网页应通过在其各自候选对象之前发送要约和回答来实现信号通道,如果您最晚从
    setLocalDescription
    的成功回调发送要约/回答,以及从
    开始发送候选对象,这是自然发生的。
    
    This code intentionally left blank.