web-dev-qa-db-fra.com

DOMException: erreur lors du traitement du candidat ICE

Je reçois cette erreur DOMException: Error processing ICE candidate lorsque j'essaie d'ajouter un candidat glace. Voici le candidat:

candidat: 1278028030 1 udp 2122260223 10.0.18.123 62694 typ Host génération 0 ufrag eGOGlVCnFLZYKTsc ID-réseau 1

De plus, cela ne se produit pas toujours - à un autre moment, tout se passe bien. Je ne peux pas reproduire un modèle cohérent dans lequel cela produirait cette erreur. Toutes les idées sur la façon de résoudre ce problème/de le déboguer seraient les bienvenues!

13
Evaldas Raisutis

Ce problème est presque totalement non documenté et, pour aggraver les choses, seul Google semble mettre en œuvre le standard w3 webRTC. Ils s'écartent également de cette norme.

Toutefois, comme il est fort probable que cela se produise sur Chrome (je n'ai pas vérifié Firefox et Safari n'implémente pas getUserMedia()), ce message d'erreur obtenu en lançant Chrome à partir de la console aidera probablement:

[ERROR:rtc_peer_connection_handler.cc(1439)] Error processing ICE candidate.
[ERROR:webrtcsession.cc(1134)] ProcessIceMessage: ICE candidates can't be added without any remote session description.

Vous ne pouvez donc pas ajouter de candidats ICE sans définir la description à distance, conformément à la version la plus récente de Chrome. En 2017, aucune progression WebRTC, à l'exception de Facebook Messenger, semble valable pour un avenir proche.

Alors rappelez-vous d'appeler

if(!peerConnection || !peerConnection.remoteDescription.type){
    //Push candidate onto queue...
}

et après avoir défini la description distante, répétez la file d'attente pour ajouter des candidats avec la connexion homologue dans le bon état!

21
lol

Cela peut être obsolète, mais j'ai eu la même erreur,

Sur Chrome, j'ai eu DOMException: Error processing ICE candidate

Sur Firefox, une erreur mentionnait uniquement DOMException.

Le message supplémentaire était: "Invalid candidate (both sdpMid and sdpMLineIndex are null).", et c'était exactement le cas, je ne les ai vraiment pas utilisées à partir de la réponse que j'ai reçue du serveur de signalisation concernant le candidat glace.

L'utilisation de ces 2 valeurs lorsque j'ai reçu le signal a permis d'éviter que cette erreur ne se reproduise.

J'espère que ceci aide quelqu'un d'autre.

2
Stefan Peshikj

Si vous conservez plusieurs objets RTCPeerConnection, vous devez vous assurer que vous ajoutez les candidats et les descriptions ICE au bon.

2
fiatjaf

Ajoutez-vous le candidat avant d'appeler setRemoteDescription? Firefox 36 avait un problème où il envoyait des candidats avant la description à distance, mais le problème est résolu depuis longtemps.

1
Philipp Hancke

Si je fais un deuxième tour d'offre-réponse, cela fonctionne. Je ne sais pas pourquoi cela est nécessaire cependant. 

1
Evaldas Raisutis

Cette erreur peut également se produire si vous essayez de vous connecter à votre propre identifiant d'homologue (local).

1
Steve Dekorte