Ending WebRTC video call between two peers

眉间皱痕 提交于 2020-05-15 06:16:25

问题


I've set up a video chat between two peers using WebRTC. I would like to allow a peer to end the chat and for the other peer to know that the chat was ended. Once the chat ends, some code needs to be executed for both peers. The PeerConnection object has a removeStream() method which should trigger the onremovestream() listener. This would be perfect for my use case, however, before onremovestream() is called there needs to be a re-negotiation (offer/answer) between the peers. For my case this seems odd. Why would I re-negotiate only to disconnect? Shouldn't the PeerConnection object realize no stream is coming from the other user? My question: how can I end a PeerConnection and alert the other user?


回答1:


You can simply close the connection. The other peer can listen for the signal oniceconnectionstatechange and the state of disconnected means that your peer has closed the connection/is no longer available. If I were you, I would do a timeout before closing as this state could be because of a flaky network connection. MDN has some good info

Or, you could keep track of connections with your signalling server and signal the peers when somebody leaves. Either way should work.




回答2:


Open a datachannel and use it to say "I'm done"; when one side gets "I'm done" it says "ok, you're done". To be totally safe and have both sides know the call is ending before it really disconnects, use a 3-way handshake over datachannels to end the call (and you can change the media to black/silence immediately by setting track.enabled = false for the audio and video tracks)



来源:https://stackoverflow.com/questions/26287844/ending-webrtc-video-call-between-two-peers

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!