WebRTC никогда не срабатывает onIceCandidate
Я начал разрабатывать с WebRTC, но это никогда не дает мне кандидатов на ICE. Я все настроил, я обмениваюсь описаниями и прочим, я также сделал очень уродливую функцию, чтобы убедиться, что все работает правильно, один за другим. Состояние сигнализации стабильно для обоих,OnError никогда не запускается (как и ожидалось), но также onIceCandidate (не так, как ожидается), и когда я хочу отправить случайный пустой объект MediaStreampc1.addStream(new webkitMediaStream());
всегда срабатываетonNegotiationNeeded.
У кого-нибудь есть идея, что, черт возьми, не так с моим кодом? Я часами просматривал Stack Overflow, HTML5 Rocks и документы W3C, но я этого не понимаю. Вот весь мой код:
var config={
'iceServers':[{
'url':'stun:stun.l.google.com:19302'
},{
'url':'stun:stun1.l.google.com:19302'
},{
'url':'stun:stun2.l.google.com:19302'
},{
'url':'stun:stun3.l.google.com:19302'
},{
'url':'stun:stun4.l.google.com:19302'
}]
};
var pc1=new webkitRTCPeerConnection(config);
var pc2=new webkitRTCPeerConnection(config);
var onError=function(error)
{
console.error(error);
}
pc1.onicecandidate=function()
{
console.log('PC1 onIceCandidate (finally) fired!');
}
pc2.onicecandidate=function()
{
console.log('PC2 onIceCandidate (finally) fired!');
}
pc1.oniceconnectionstatechange=function()
{
console.log('PC1 oniceconnectionstatechange fired!');
}
pc2.oniceconnectionstatechange=function()
{
console.log('PC2 oniceconnectionstatechange fired!');
}
pc1.onnegotiationneeded=function()
{
console.log('PC1 onnegotiationneeded fired!');
}
pc2.onnegotiationneeded=function()
{
console.log('PC2 onnegotiationneeded fired!');
}
pc1.createOffer(function(offer){
pc1.setLocalDescription(offer,function(){
pc2.setRemoteDescription(new RTCSessionDescription(offer),function(){
pc2.createAnswer(function(answer){
pc2.setLocalDescription(answer,function(){
pc1.setRemoteDescription(new RTCSessionDescription(answer),new Function()/*I don't need you, bro*/,onError);
},onError);
},onError);
},onError);
},onError);
},onError);
Кстати я разрабатываю с Google Chrome. Я позабочусь, чтобы он также работал в Firefox, но сейчас проблема должна быть кросс-браузерной. Я хочу добраться до каналов данных раньше ... (но я ничего не имею против работающего решения с Firefox или кросс-браузерным кодом)