有没有办法在已建立对等连接时创建数据通道?
这是我正在做的事情:
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);
};
}
};
Run Code Online (Sandbox Code Playgroud)
它给了我以下输出:
state changed to : have-local-offer
state changed to : stable
connection is stable
Run Code Online (Sandbox Code Playgroud)
如何确保连接真正建立?我在这里发现stable状态等于active状态.
onopen 事件由于某种原因不会触发,所以我仍然不确定是否建立了连接.
如果您需要更多代码,请告诉我.
编辑:我添加了onnegotiationneeded事件处理程序,现在peerConnection.ondatachannel正在触发,但通道处于connecting状态
你可能遇到了和我一样的问题.显然,您必须在创建商品之前添加数据通道,如果要添加流,则需要创建新的商品/答案并重新协商.根据W3C规范:
特别是,如果RTCPeerConnection对象正在使用MediaStream并且轨道被添加到流的MediaStreamTrackList对象之一,例如,通过调用add()方法,RTCPeerConnection对象必须触发"negotiationneeded"事件.删除媒体组件也必须触发"需要协商".
但是,尚未在FF中构建协商所需的事件(我认为在Chrome中),这就是为什么事情可能会有点不规律.
| 归档时间: |
|
| 查看次数: |
2540 次 |
| 最近记录: |