事件回调在 Mozilla Firefox 中未触发
event callback not firing in Mozilla Firefox
我正在使用WebRTC为音频会议创建一个示例应用程序。我正在尝试做的是创建一个RTCpeerconnection
对象并向其传递从调用方收到的远程描述。设置远程描述后,将为对等连接对象触发"onaddstream"事件,我们可以将远程描述中收到的流设置为某些音频/视频控件,如以下示例代码所示:
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.org/en-US/docs/Web/API/RTCPeerConnection#Initializing_the_call
规范对onaddstream说:
每当远程对等方添加媒体流时,都会调用它。这只会作为 setRemoteTDescription 的结果触发。Onnaddstream在setRemoteDescription之后尽可能早地发生。此回调不会等待通过 SDP 协商接受或拒绝给定的媒体流。
Firefox 目前在协商完成之前不会触发 onaddstream;请参阅 Bug 1122306
无论如何,在你执行 SetLocalDescription() 之前,媒体不应该流动,所以只要让它不让你接受
相关文章:
- AngularJS:我可以跳过函数参数回调吗
- 要求未定义JS回调参数
- MeteorJS:在带有回调的vzaar api上正确使用wrapAsync
- 自引用回调
- 测试Angular Service解决错误回调中的promise
- 如何将一个JavaScript函数回调为多个函数
- JavaScript回调函数
- 在firefox中,使用jquery ajax不会调用错误和完整回调
- AJAX 回调在 Firefox 中失败
- FireFox webrtc createoffer,没有任何回调调用
- 在 Firefox 上的 DOMContentLoaded 之前运行的异步回调
- 事件回调在 Mozilla Firefox 中未触发
- “(回调方法)未定义”在 Firefox 插件上的 JSONP 访问中
- jQuery ajax done 回调在 Firefox 中表现得很奇怪
- Firefox 11和GeoLocation拒绝回调
- Jquery隐藏回调函数在firefox中不起作用
- Javascript回调函数抛出错误"回调不是函数"在firefox中
- 在等待AJAX回调时更改image src:仅适用于Firefox
- jquery.getScript 在 Firefox 上加载 Facebook SDK 时不会执行回调
- 如何在android上的firefox插件中使用沙盒回调