我希望你一切都好
我是webRTC的初学者,很抱歉,如果我的问题听起来像个菜鸟,但我想知道是否有任何适当的方法可以关闭同级之间的连接,尤其是使用simple-peer.js,期待您的出色答复>
这是我的示例代码,
if (navigator.getUserMedia) {
navigator.getUserMedia({ audio: { echoCancellation: true }, video: true }, stream => {
let peer = new Peer({
initiator: this.props.isInitiator,
stream
});
this.localStream.current.srcObject = stream;
this.localStream.current.play();
peer.on('signal', (data) => {
socket.emit('offer', { data: JSON.stringify(data), conversation_id: this.props.conversation_id })
});
socket.on('offer', (data) => {
peer.signal(JSON.parse(data))
})
socket.on('DESTROY-VIDEO-CALL-SESSION', () => {
stream.getTracks().forEach(track => track.stop());
peer.removeAllListeners();
peer.destroy();
});
peer.on('stream', (streamData) => {
this.remoteStream.current.srcObject = streamData;
this.remoteStream.current.play();
});
this.setState({
endCall: () => {
socket.emit('VIDEO-CALL-ENDED', this.props.conversation_id);
}
})
}, error => {
alert('Please allow video and audio permission to make this call')
});
}
答案 0 :(得分:2)
函数是peer.destroy()。
Fyi,如果需要在Javascript库中找到未记录的API函数,可以通过在浏览器中运行JS文件并按F12调出调试控制台来完成此操作。实例化要调查的对象后,设置一个断点:
实例化peer1之后,我设置了一个断点(第51行)。然后,我将鼠标悬停在peer1(第50行)上,以弹出一个属于该对象的所有属性(方法和字段)的菜单。如果您在这种情况下正在寻找特定的功能,有时您会在此菜单中立即找到它,但是通常您必须扩展名为__proto__的属性:
您可以在此处看到销毁功能。只是猜测是否以这种方式找到的函数确实可以完成您想要的操作,但是幸运的是,在这种情况下它可以满足我们的要求。