我正在开发一个使用webRTC的视频通话应用程序。我只在本地网络中使用此应用程序。在测试中,成功制造的几个连接装置连接得非常好。但是,有一些设备,我不知道为什么他们不能打电话给一些设备。它的行为很奇怪。下面是我做的一个呼叫模拟:
- 所有设备连接到同一本地网络/WiFi,
- 有问题的设备以粗体显示
- Windows [A]-> MacOs =成功
- MacOs-> Windows [A]=成功
- Windows [B]**-> MacOs =失败
- MacOs->Windows [B]=成功
- Windows [A]->Windows [B]=成功
- Windows [B]**-> Windows [A]=失败
- Windows [B]**-> IOS =成功
- IOS->Windows [B]=成功
- Windows [C]**->普通桌面设备=失败
- 正常桌面设备->Windows [C]=成功
- Windows [C]**-> IOS =成功
- IOS->Windows [C]=成功
这是我从chrome://webrtc-internals/
得到的屏幕截图
- 问题设备的连接状态**
状态仍为新状态,未更改
- 接收问题设备呼叫时的被叫连接状态**
- 连接成功示例**
我使用谷歌的Stun服务器,我也尝试过不使用iceServers。结果还是一样。我想如果我们只是在本地网络中,我们不需要一个眩晕/转向服务器,对吗?
奇怪的是,有问题的设备不能向其他台式机进行呼出呼叫,但是可以与移动设备进行/接收呼叫。而有问题的设备之间也无法连接,因为在我看来,问题是有问题的设备无法拨打电话。
我感到困惑的是,是什么原因导致一些设备无法像上面的情况一样拨打外呼?我相信这不是代码中的错误,因为调用在其他正常设备上完美运行。我尝试了各种方法,直到我在这个时候使用Perfect Negotiation Logic,但结果还是一样。
也许有人经历过类似的事情,可以在上面的情况下提供解决方案。非常感谢
2条答案
按热度按时间txu3uszq1#
在本地网络中,我们不需要直接击晕,它将连接。我们必须集中精力,如果我们试图从公共到私有和私有到公共进行调用,任何防火墙限制或任何可达性问题,当收集候选或可能是对称NAT问题。
qq24tv8q2#
最后我终于找到了问题所在。是的,问题出在防火墙上。看起来webRTC使用的UDP端口被防火墙阻止了。解决方案是在防火墙上打开一个UDP端口,这样就不必关闭防火墙。我的情况发生可能是因为我只在一个本地网络上使用webRTC,并且不需要STUN/TURN服务器,所以它需要一个UDP端口来连接到对等体。