通过浏览器使用WebRTC时会话终止或断开都是什么原因?

Posted TSINGSEE

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过浏览器使用WebRTC时会话终止或断开都是什么原因?相关的知识,希望对你有一定的参考价值。

WebRTC现在已经成为了W3C的正式标准,提供具有NAT遍历功能的次秒级的点对点视频和音频流。次秒级延迟已经被广泛应用于视频会议之中,也一直是视频流公司的焦点,目前我们已经在EasyGBS平台内实现了webrtc视频的播放,如下图:

webrtc.png

在浏览器使用webrtc,那么在以下情况出现时将会导致会话终止:

A、关闭浏览器后,会话将终止;
B、关闭webrtc会话所在的选项卡时,会话将终止;
C、属性webrtc会话所在的页面时,会话将终止;
D、点击连接移至到不同页面(即使在同一站点上)时,会话将终止。

所以可以将WebRTC的断开连接分为3大类:
A、完全无法连接
B、媒体流断开
C、信令断开

在每个场景中,都会有多个场景,定义失败的原因以及如何处理和客服这些问题,下面我们逐个来分析一下。

无法连接:

有的情况是连接webrtc会话时发生了大量的失败,甚至无法发送SDP信息,通过跨浏览器和设备的互操作性问题,再到无法连接进行媒体ICE的协商。

如果出现这种情况,解决的办法是:重新进行SDP信息协商和ICE的信息交换;或者查看服务端有没有运行。才导致的信息发不出去。

媒体断开:

发生这种情况的原因有很多种:

  • 所使用接入点的防火墙策略杀死P2P加密流量;
  • 用户在会话中途从一个网络却换到另一个网络,这样网络协商错误,您应该遵循webrtc的ICE协商机制;
  • 另一端崩溃、关闭或者下线,也会导致媒体断开。

每一个媒体断开都需要不同的处理,在一些代码中有些需要手动处理。防火墙问题就是客户端与客户端在一起制定配置以解决问题。

信令断开:

如果信令断开连接,webrtc甚至不知道,因此webrtc不会立即导致会话本身断开连接。那么可以根据服务器的websocket连接的状态来终止webrtc对等连接,在服务器端一旦连接丢失,应该终止媒体路径,向对端发送断开连接消息。想确保媒体流继续进行,需要在连接同一个用户或者会话的对等连接,可以在连接状态中添加一个计时器来确保连接状态。

以上是关于通过浏览器使用WebRTC时会话终止或断开都是什么原因?的主要内容,如果未能解决你的问题,请参考以下文章

多点连接终止会话

如何在 django 中关闭浏览器上的会话

android webview或浏览器不会在设备重启时删除会话cookie

如何正确拆除多人连接会话?

通过BackgroundTask在后台维护多路连接会话?

CallKit + WebRTC:在 iOS 中按下锁定/电源按钮时 CallKit 通话断开