我已经使用WebRTC
在两个对等方之间建立了视频聊天。我想允许一个对等端结束聊天,让另一个对等方知道聊天已经结束。一旦聊天结束,就需要为两个对等方执行一些代码。PeerConnection
对象有一个removeStream()
方法,该方法应该触发onremovestream()
侦听器。这将非常适合我的用例,然而,在调用onremovestream()之前,需要在对等方之间进行重新协商(offer/answer)。就我而言,这似乎很奇怪。为什么我会重新谈判,结果却断开了联系?PeerConnection对象难道不应该意识到没有来自其他用户的流吗我的问题:如何结束对等连接并提醒其他用户?
您可以简单地关闭连接。另一个对等方可以监听信号oniceconnectionstatechange
,而disconnected
的状态意味着您的对等方已关闭连接/不再可用。如果我是你,我会在关闭之前暂停,因为这种状态可能是因为网络连接不稳定。MDN有一些好的信息
或者,你可以跟踪与信号服务器的连接,并在有人离开时向同行发出信号。无论哪种方式都应该有效。
打开一个数据通道,用它来表示"我完成了";当一方得到"我完了"时,它会说"好吧,你完了"。为了完全安全,并在通话真正断开之前让双方都知道通话正在结束,请在数据通道上使用3向握手来结束通话(您可以通过为音频和视频曲目设置track.enabled=false立即将媒体更改为黑色/静音)