- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
有没有办法在对等连接已经建立时创建数据通道?
这是我正在做的事情:
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
正在触发,但 channel 处于 connecting
状态
最佳答案
您可能遇到了和我一样的问题。显然,您必须在创建报价之前添加一个数据通道,如果您想添加一个流,您将需要创建一个新的报价/答案并重新协商。根据 W3C 规范:
In particular, if a RTCPeerConnection object is consuming a MediaStream and a track is added to one of the stream's MediaStreamTrackList objects, by, e.g., the add() method being invoked, the RTCPeerConnection object must fire the "negotiationneeded" event. Removal of media components must also trigger "negotiationneeded".
但是,FF 中还没有构建协商需要的事件(我认为在 Chrome 中),所以这就是为什么事情可能会有点不稳定。
关于webrtc - peerConnection 建立后创建 WebRTC 数据通道,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15324500/
一 点睛 通道用于数据的双向传输,即一个通道既可以用于读数据,又可以用于写数据。注意,这点不同于 I/O 中的 Stream,Stream 是单向的(只能是输入流或输出流)。 在 NIO 中,就是使用
一 点睛 通道用于数据的双向传输,即一个通道既可以用于读数据,又可以用于写数据。注意,这点不同于 I/O 中的 Stream,Stream 是单向的(只能是输入流或输出流)。 在 NIO 中,就是使用
我是一名优秀的程序员,十分优秀!