“使用 simple-peer.js 库断开对等点并停止这些对等点之间的流传输的正确方法是什么?”

Dan*_*bir 5 webrtc simple-peer

我希望你们一切都好

我是 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')
            });
}
Run Code Online (Sandbox Code Playgroud)

Ale*_*lex 4

该函数是peer.destroy()。

仅供参考,如果您需要在 Javascript 库中查找未记录的 API 函数,您可以通过在浏览器中运行 JS 文件并按 F12 打开调试控制台来完成此操作。在实例化要调查的对象后设置断点:

显示悬停对象的所有属性的调试控制台

我在实例化peer1(第51行)后设置了一个断点。然后我将鼠标悬停在peer1(第50行)上,弹出一个菜单,其中包含属于该对象的所有属性(方法和字段)。如果您正在寻找本例中的特定函数,有时您可以立即在此菜单中找到它,但通常您必须扩展名为 __proto__ 的属性:

显示隐藏销毁函数属性的扩展原型对象

您可以在此处看到销毁函数。这只是猜测以这种方式找到的函数是否确实执行了您希望它执行的操作,但幸运的是,在本例中它执行了我们想要的操作。