Webrtc,ICE失败

video通话在同一个networking中正常工作。 问题是在其他networking上调用计算机时,远程video不显示。 在铬我没有得到任何错误的控制台,但在Firefox的控制台我得到“ICE失败”

我使用Node JS来实现信令服务器和Google STUN服务器。

以下是正在使用的事件序列:

用户A:

  1. 创build对等连接 (包括getusermedia,addstream)
  2. 寄存在Icecandidate处理程序上

  3. 发出一个套接字事件来通知用户B该呼叫并等待响应

  4. 用户B接收提供并创build答案

用户B:

  1. 接收套接字事件并创build对等连接 (包括getusermedia,addstream)

  2. 注册onicecandidate处理程序

  3. 还注册“Onnegogiationneeded”处理程序。 用户A没有这个处理程序。 它被删除,以便用户B有足够的时间来创build对等连接候选处理程序,然后创build一个提议
  4. Onnegogiation被触发时,一个报价被创build并被发送给用户A.

注意:
1.创buildOffer之前,在两边创buildpeerconnectiononicecandidate处理程序。 2.这样做是为了确保在创build报价之前,双方都能准备好Onicecandiate处理程序,并且不会错过ICE候选人

上述一系列事件是否有问题?

我们可以按以下顺序debugging和解决问题:

  1. 检查正在交换的SDP和候选人。
  2. 如果任何一个STUN候选我是指srflx或prflx交换,协商,我们需要检查他们是否以后用于交换媒体或不。如果不是STUN服务器configuration不正确,请正确。
    3.如果STUN候选人交换仍然面临这个问题,这意味着不同networking中的候选人之一是对称防火墙后面。在这种情况下,需要configurationTURN服务器。 您可以使用任何免费的TURN服务器或部署我们自己的TS或使用一些付费service.Make确保您configurationTURN服务器以及您的防火墙。 大多数TURN服务器不是免费的。

4.如果仍然遇到问题,说明防火墙存在问题,那么对于STUN,TURN服务器或协商端口在您的防火墙中未打开所需的端口。 在这种情况下,在开放networking中testing您的设置。 如果有效的话,必须打开这些端口/ IP并相应地configuration防火墙。

PS:你可能在chrome控制台中找不到任何日志,但是在chrome:// webrtc-internals中,你会发现非常丰富的信息,这些信息对于debugging和解决你的问题是非常有用的。