检查WebRTC连接 - 可靠的方法

时间:2015-08-14 13:05:56

标签: network-programming connection protocols webrtc ports

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

有时用户可以连接到网络,阻止那些WebRTC连接不能发生的端口和协议(通常是公司网络)。我想在用户尝试相互连接之前检查WebRTC连接是否可行(实际上,执行技术检查)。

我该怎么办?我脑子里的想法:

  1. 尝试通过WebRTC 下载托管数据块(例如音频文件) - 这是否可能,这是否足以确保入站和出站连接都已打开?
  2. 使用 TURN服务器作为主机建立连接并查看是否失败(不知道我是否可以这样做)
  3. 使用 Flash尝试通过特定端口和协议下载/上传大量数据。甚至可以使用Cirrus。但是,我不确定这项测试是否符合WebRTC的预期。
  4. 还有其他想法吗?
  5. 附加要求:检查技术必须支持Chrome,Opera和Firefox。最好也是通过Temasys插件的IE / Safari。

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

2 个答案:

答案 0 :(得分:2)

典型的WebRTC方法是使用STUN和TURN服务器创建对等连接,调用createOffer和setLocalDescription并观察收集的候选者。参见例如http://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/

如果您获得srflx候选人,您的昏迷服务器可以正常工作(即UDP不被阻止)。更有趣的是你是否得到接力候选人。如果你这样做,使用TURN作为后备将起作用。如果使用TURN / TCP,质量可能会受到影响。如果你没有得到中继候选人......电话不太可能有效。

答案 1 :(得分:2)

检查的最佳方法是首先连接数据通道。您的用户不会注意到。如果可以,那么音频和视频几乎可以保证正常工作。作为奖励,您可以使用数据通道在用户准备就绪时发出超快速连接信号。