以下是Kurento的调试日志,其中显示了连接成功和连接失败的情况。
如果您需要更多的日志(例如客户端、信令服务器、tcpdump或Kurento的跟踪日志),请告诉我,我会提供!
非常感谢您的帮助或新的输入!
问题描述:
在大约30%的情况下,无法建立WebRTC连接。不幸的是,我没有任何模式可以确定何时可以建立连接,何时不行,这似乎完全是随机的。我在同一网络中,使用相同的设备、TURN服务器和信令协议,但在30%的情况下,无法建立连接。
当我在本地运行应用程序时,它似乎更加可靠,几乎可以100%地建立连接(或者甚至100%的时间,我测试了很多次,已经失去了追踪)。我使用docker在本地设置基础架构,并在不同的网络中运行不同的容器(TURN、Kurento、信令)来模拟生产部署。
我们在开发和生产环境中都遇到了相同的问题。在我们的开发环境中,我们没有任何防火墙,所以这似乎不是问题的原因。
我尝试找出问题的原因:
主要是比较工作和不工作的情况下的日志,但我未能找到任何重大差异,可以指向问题。
我已经测试了WebRTC连接通过TURN服务器(使用Firefox和force_relay标志)和直接通过Kurento,但在两种情况下,连接在约30%的情况下失败。
我尝试过过滤掉所有不是Relay候选者的ICE候选者。
我已经嗅探了我们的信令服务器(也控制Kurento)和Kurento之间的流量,以查看JSON RPS消息交换中的任何差异,但它们似乎基本相同。
我已经使用此工具测试了我们的STUN和TURN服务器:https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/ ,并获得了看起来正确的服务器反射和Relay候选者。
我嗅探了成功和失败连接的客户端流量,但发现有显著的差异。
我简化了Kurento媒体管道(没有录制,没有集线器),但行为是相同的。
我使用了不同的浏览器(Chrome,Firefox和本机iOS实现),但行为是相同的。
在连接可以建立的情况下,Kurento调试日志:
https://gist.github.com/omnibrain/2bc7ad54f626d278d3c8bac29767ac4c
一次连接无法建立的Kurento调试日志:
https://gist.github.com/omnibrain/f7caee04a5c6d77ea22a9ccfa95dd825