建立peerConnection后创建WebRTC数据通道
问题描述:
当对等连接已经建立时,是否有创建数据通道的方法?建立peerConnection后创建WebRTC数据通道
下面是我在做什么:
peerConnection.onstatechange = function(event){
var state = peerConnection.readyState;
console.log('state changed to : '+state);
if(state==='stable'){
console.log('connection is stable');
var dataChannel = peerConnection.createDataChannel('test',{reliable: false});
dataChannel.onopen = function(){
console.log('data channel opened');
dataChannel.send('hello data channel');
};
peerConnection.ondatachannel = function(event){
console.log('ondatachannel event fire ',event);
};
}
};
,它给了我下面的输出:
state changed to : have-local-offer
state changed to : stable
connection is stable
如何确保连接真正建立起来?我发现here
stable
状态等于active
状态。onopen
事件不会因某种原因而触发,所以我仍然不确定连接是否建立。
如果您需要更多的代码,请告诉我。
编辑: 我加onnegotiationneeded
事件处理程序,现在peerConnection.ondatachannel
被解雇,但渠道是connecting
状态
答
你可能已经遇到了同样的问题,因为我有。显然你必须在创建一个offer之前添加一个数据通道,如果你想添加一个流,你将需要创建一个新的offer/answer并重新协商。根据W3C规范:
特别地,如果一个RTCPeerConnection对象被消耗MediaStream和轨道被添加到该流的MediaStreamTrackList对象中的一个,通过,例如,add()方法被调用时,RTCPeerConnection对象必须触发“negotiationneeded”事件。媒体组件的移除也必须触发“协商需要”。
然而,谈判需要的事件还没有建立在FF(我认为在Chrome中),所以这就是为什么事情可能会有点不正常。
你有解决方案吗? – 2013-04-15 06:26:54
之类的,但它仍然非常不稳定 – 2013-04-16 08:44:09