结束两个对等体之间的WebRTC视频通话

时间:2014-10-09 21:01:30

标签: javascript google-chrome firefox webrtc p2p

我使用WebRTC在两个对等方之间建立了视频聊天。我想允许同伴结束聊天,让其他同伴知道聊天结束。聊天结束后,需要为两个对等体执行一些代码。 PeerConnection对象具有removeStream()方法,该方法应触发onremovestream()侦听器。这对我的用例来说是完美的,但是,在调用onremovestream()之前,需要在对等体之间进行重新协商(提供/回答)。对于我的情况,这似乎很奇怪。为什么我会重新协商才能断开连接?难道PeerConnection对象不应该意识到没有来自其他用户的流吗? 我的问题:如何结束PeerConnection并提醒其他用户?

2 个答案:

答案 0 :(得分:1)

您只需关闭连接即可。另一个对等体可以监听信号oniceconnectionstatechange,状态disconnected表示您的对等体已关闭连接/不再可用。如果我是你,我会在关闭之前暂停,因为这种状态可能是因为网络连接不稳定。 MDN has some good info

或者,您可以跟踪与信号服务器的连接,并在有人离开时向同伴发出信号。无论哪种方式都应该有效。

答案 1 :(得分:1)

打开数据通道并用它来说“我已经完成”;当一方得到“我已经完成”时,它说“好的,你已经完成了”。为了完全安全并让双方知道呼叫在真正断开连接之前结束,使用数据通道上的3次握手来结束呼叫(并且您可以通过设置track.enabled = false立即将媒体更改为黑色/静音音频和视频曲目)