Webrtc,ICE失败
video通话在同一个networking中正常工作。 问题是在其他networking上调用计算机时,远程video不显示。 在铬我没有得到任何错误的控制台,但在Firefox的控制台我得到“ICE失败” 。
我使用Node JS来实现信令服务器和Google STUN服务器。
以下是正在使用的事件序列:
用户A:
- 创build对等连接 (包括getusermedia,addstream)
-
寄存在Icecandidate处理程序上
-
发出一个套接字事件来通知用户B该呼叫并等待响应
- 从用户B接收提供并创build答案 。
用户B:
-
接收套接字事件并创build对等连接 (包括getusermedia,addstream)
-
注册onicecandidate处理程序
- 还注册“Onnegogiationneeded”处理程序。 用户A没有这个处理程序。 它被删除,以便用户B有足够的时间来创build对等连接 , 候选处理程序,然后创build一个提议
- 当Onnegogiation被触发时,一个报价被创build并被发送给用户A.
注意:
1.创buildOffer之前,在两边创buildpeerconnection和onicecandidate处理程序。 2.这样做是为了确保在创build报价之前,双方都能准备好Onicecandiate处理程序,并且不会错过ICE候选人 。
上述一系列事件是否有问题?
我们可以按以下顺序debugging和解决问题:
- 检查正在交换的SDP和候选人。
- 如果任何一个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和解决你的问题是非常有用的。