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:
- serveur STUN public Google
stun:stun.l.google.com:19302
; - Le serveur TURN est
Coturn
hébergé dans azure dans docker; - serveur signalisation est un https://github.com/andyet/signalmaster sur mesure que l'utilisation Express comme serveur web
- Le client JS est utilisé, avec
simplewebrtc
comme client; - Pour le support iOS utilisé plug-in Cordova - https://github.com/eface2face/cordova-plugin-iosrtc
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.
Avez-vous vérifié que votre serveur de tour fonctionne réellement? Voir l'exemple # 2 [ici] (http://testrtc.com/webrtc-api-trace/) –
@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. –
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 –