事件回调在Mozilla Firefox中没有被触发

问题描述 投票:1回答:1

我正在为使用WebRTC的音频会议创建一个示例应用程序。我想做的是创建一个 RTCpeerconnection 对象,并将从调用者那里接收到的远程描述传递给它。一旦远程描述被设置,那么'onaddstream'事件就会为peer-connection对象被触发,我们可以将远程描述中接收到的流设置为一些有声视频控制,如下面的示例代码所示。

function call() {        
    chatHub.server.connect('receiver');        
    pc2 = new RTCPeerConnection(null, pcConstraints);
    pc2.onicecandidate = iceCallback2;
    pc2.onaddstream = gotRemoteStream; 
}
function gotDescription1(desc) { 
    var dessc = new RTCSessionDescription({ type: 'offer', sdp: desc });    
    pc2.setRemoteDescription(dessc);
}
function gotRemoteStream(e) { 
    //attaching the stream to UI controls
    audio2 = attachMediaStream(audio2, e.stream);
    audio2.play();  
    pc2.createAnswer(gotDescription2, onCreateSessionDescriptionError,sdpConstraints);
    callButton.disabled = true;
    hangupButton.disabled = false;
}
function gotDescription2(desc) {
    pc2.setLocalDescription(desc);      
}
function iceCallback2(event) {
    //---foo----
}

从示例代码中可以清楚地看到,流程从调用方法开始,它设置了一个 "远程描述 "事件。PeerConnection 对象并设置其事件回调,然后 gotDescription1 是由一些代码元素调用的,现在我们在这里设置远程描述,它应该启动 gotRemoteStream 内部。

除了Firefox之外,所有这些在主流浏览器中都能正常工作,对象的远程描述被设置,但没有回调的 gotStream.

检查这个可能的解释。

https:/developer.mozilla.orgen-USdocsWebAPIRTCPeerConnection#Initializing_the_call。

javascript firefox callback webrtc dom-events
1个回答
1
投票

规范 说的是onaddstream。

它在远程对等体添加MediaStream时被调用。只有在setRemoteDescription的结果下才会被调用。onaddstream在setRemoteDescription之后尽可能早地发生。这个回调不会等待给定的媒体流通过SDP协商被接受或拒绝。

Firefox 目前在协商完成之前不会启动 onaddstream;请参见 错误1122306

在任何情况下,在你做SetLocalDescription()之前,媒体都不应该流动,所以只要让它不闸你的接受。

© www.soinside.com 2019 - 2024. All rights reserved.