gpt4 book ai didi

webrtc - peerConnection 建立后创建 WebRTC 数据通道

转载 作者:行者123 更新时间:2023-12-01 09:30:57 24 4
gpt4 key购买 nike

有没有办法在对等连接已经建立时创建数据通道?

这是我正在做的事情:

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
  1. 如何确保真正建立了连接?我找到了 here stable 状态等于 active 状态。

  2. onopen 事件由于某种原因没有触发,所以我仍然不确定是否建立了连接。

如果您需要更多代码,请告诉我。

编辑:我添加了 onnegotiationneeded 事件处理程序,现在 peerConnection.ondatachannel 正在触发,但 channel 处于 connecting 状态

最佳答案

您可能遇到了和我一样的问题。显然,您必须在创建报价之前添加一个数据通道,如果您想添加一个流,您将需要创建一个新的报价/答案并重新协商。根据 W3C 规范:

http://www.w3.org/TR/webrtc/

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com