Network programming 检查WebRTC连接-可靠的方法

Network programming 检查WebRTC连接-可靠的方法,network-programming,connection,protocols,webrtc,ports,Network Programming,Connection,Protocols,Webrtc,Ports,我有一个实时视频聊天应用程序,我使用一个支持STUN/TURN和UPD/TCP传输的TURN服务器 有时,用户可以连接到网络,该网络阻止了WebRTC连接无法实现的大量端口和协议(通常是公司网络)。我想在用户尝试相互连接之前检查WebRTC连接是否可行(实际上,执行技术检查) 我怎么做?我脑子里的想法是: 尝试通过WebRTC下载托管数据块(例如音频文件)——是否可能,这是否足以确保入站和出站连接都已打开 使用将服务器转为主机与主机建立连接并查看是否出现故障(不知道我是否能做到) 使用Flash

我有一个实时视频聊天应用程序,我使用一个支持STUN/TURN和UPD/TCP传输的TURN服务器

有时,用户可以连接到网络,该网络阻止了WebRTC连接无法实现的大量端口和协议(通常是公司网络)。我想在用户尝试相互连接之前检查WebRTC连接是否可行(实际上,执行技术检查

我怎么做?我脑子里的想法是:

  • 尝试通过WebRTC下载托管数据块(例如音频文件)——是否可能,这是否足以确保入站和出站连接都已打开
  • 使用将服务器转为主机与主机建立连接并查看是否出现故障(不知道我是否能做到)
  • 使用Flash尝试通过特定端口和协议下载/上传数据块。甚至可能使用卷云。然而,我不确定这个测试是否准确
  • 还有其他想法吗
  • 附加要求:检查技术必须支持Chrome、Opera和Firefox。最好通过Temasys插件使用IE/Safari


    第1版-收集ICE候选人是一个好主意,但是,它不是100%可靠的。有一次我检查了应用程序中的日志,它实际上收集了中继ICE候选对象,但视频/音频传输失败。在Apprtc上也进行了测试,得到了相同的结果。

    典型的WebRTC方法是与STUN和TURN服务器创建对等连接,调用createOffer和setLocalDescription,并观察收集的候选对象。见例


    如果您获得srflx候选,您的stun服务器将正常工作(即UDP未被阻止)。更有趣的是你是否得到了接力赛候选人。如果你这样做了,使用转弯作为退路将有效。如果使用TURN/TCP,质量可能会受到影响。如果你没有接力赛的候选人。。。呼叫不太可能工作。

    检查的最佳方法是首先只连接一个数据通道。你的用户不会注意到。如果这样做有效,那么音频和视频几乎可以保证工作。作为奖励,当您的用户准备好时,您可以使用数据通道发送超快连接信号

    你确定这个方法可靠吗?请参阅本问题的第1版。它可以可靠地判断本地客户是否能够联系到您。无法判断远程客户端是否可以提前执行相同的操作。将这一点与另一个答案结合起来,可以很好地使用icetransports设置为relay的方法创建两个对等连接,并实际创建一个通过TURN server返回“yourself”的数据通道,然后在其中传输一些消息。检查您是否可以获得中继候选以及建立中继数据通道。我已经提到,作为技术检查的一部分,我必须提前检查。很遗憾,无法连接到真实用户。@igorpavlov为什么不能?它不需要权限或用户交互。你愿意下载大量数据。这有什么不同?请澄清本“技术检查”的要求。