2017-03-16 8 views
2

Les appels WebRTC ne sont pas fiables dans notre application. Parfois, nous voyons l'écran noir, parfois nous ne voyons pas le démarrage d'appel du tout et parfois il y a des retards énormes ou des désynchronisations en audio/vidéo.Comment réparer les appels WebRTC non fiables?

Configuration:

Presque 100% question reproduite appelle d'un client sur LTE à l'autre sur le Wi-Fi. Dans ce cas, nous voyons un écran noir sur les deux appareils, cependant, bg-color par défaut est blanc, donc au moins quelque chose se passe sur le côté WebRTC.

Ce qui a été fait pour résoudre les problèmes:

  • journaux Examiné Coturn ... Parfois, nous voyons des erreurs « non autorisées » là-bas, mais il est difficile de dire si elles affectent quoi que ce soit;
  • Vérifié le trafic de Coturn: dans les scénarios Wi-Fi à Wi-Fi, il est faible, donc la connexion peer-to-peer est vraiment faite. S'il y a LTE, nous voyons une charge de 40-120KiB/sec (n'est-ce pas trop faible pour l'audio/vidéo?), Alors TURN semble fonctionner;
  • Journaux d'application client vérifiés, rien de spécial;

Veuillez suggérer n'importe quel moyen de recherche ou solution pour rendre WebRTC aussi fiable que possible.

+0

Avez-vous vérifié que votre serveur de tour fonctionne réellement? Voir l'exemple # 2 [ici] (http://testrtc.com/webrtc-api-trace/) –

+0

@PhilippHancke Quand il n'y a pas de connexion peer-to-peer, nous voyons du trafic à travers le serveur TURN, 40-120KiB/sec. Et ce pic correspond à l'appel. –

+0

40-120kbps sont trop faibles pour un appel audio/vidéo. En outre, TURN est une solution de repli qui ne sera pas utilisée lorsque la connectivité directe fonctionne. Le moyen le plus simple de vérifier cela est d'arrêter le serveur tournant lorsque la connexion est en cours - si l'appel continue, il n'utilise pas le serveur TURN –

Répondre

0

WebRTC Connection Process

Le schéma ci-dessus est de this article je l'ai écrit qui va dans beaucoup de détails à ce sujet.

Peu de temps, des problèmes peuvent apparaître dans l'une des 3 étapes:

  1. signalisation
  2. découverte
  3. utilisant STUN/TURN
  4. connexion p2p

Voici ce que je ferais:

  1. Utilisez une faible résolution minimale des contraintes comme 320x240, ce fera en sorte qu'il n'y a pas simple à éviter getUserMedia() errors
  2. Faire la signalisation que se fait sur le port 80 ou 443
  3. Dans de nombreux cas, un pair ne peut pas communiquer avec la Les serveurs STUN/TURN essaient donc de communiquer avec STUN/TURN en utilisant TCP (stun:stun.l.google.com:19302?transport=tcp) et le port 80 (par défaut le port UDP 3478 ou 19302 pour STUN de Google et ils peuvent être bloqués par votre routeur/firewall/proxy/réseau mobile)
  4. Utilisation TrickleICE (avec votre propre STUN/TURN) et le WebRTC Troubleshooter sur les appareils LTE/WiFi et vous apprendrez beaucoup sur la façon dont ils peuvent être connectés à