断线重连机制是什么?RTC中如何实现断线重连机制

断线重连机制是什么?

断线重连是指在计算机网络中,当网络连接遇到异常中断或者断开时,系统会自动尝试重新建立连接,以保证网络通信的连续性和稳定性。断线重连是一种常见的网络通信技术,广泛应用于各种计算机网络场景,包括互联网、局域网、广域网等。

断线重连在 RTC 中也是一种常用的技术手段,用于在网络连接中断时自动重新建立连接,确保通信的可靠性和稳定性。

本文介绍断线重连在WebRTC中实现的步骤,断线重连的最佳实践(在 ZEGO音视频SDK中的逻辑处理)。

WebRTC 中实现断线重连的步骤

在 WebRTC 中,实现音视频断线重连通常需要以下步骤:

  1. 长连接与心跳机制
    • 建立长连接,保持客户端和服务器之间的通信。
    • 实现心跳机制,定期发送心跳包以检测连接状态。
  2. 断线重连策略
    • 当连接断开时,设置一个重连计时器。
    • 在一定时间后,尝试重新连接服务器。
    • 如果重连失败,可以根据具体情况进行处理,例如更新 UI 状态。
  3. WebRTC PeerConnection 监听
    • 使用 OnIceConnectionChange 方法监听 ICE 连接状态的变化。
    • 当连接状态变为 kIceConnectionDisconnected 时,触发断线重连逻辑。

请注意,具体实现可能因应用场景和需求而异。你可以根据你的项目要求,选择合适的断线重连策略和实现方式。

ZEGO音视频SDK断线重连逻辑说明

ZEGO音视频SDK支持断线重连机制。下面将介绍房间重连下的 SDK 的逻辑处理。

ZEGO音视频SDK是一款实时的音视频互动服务产品,能够为开发者提供便捷接入、高可靠、多平台互通的音视频服务。通过低至 200 ms 的端到端平均时延,业内领先的保障弱网质量的 QoS 策略,并结合强大的 3A 处理能力,完美支持一对多、多对多的实时音视频通话、直播、会议等场景。详情可通过https://www.zego.im/product/realtime-video了解

房间重连

用户登录房间后,因网络信号问题/网络类型切换问题导致的与房间断连,SDK 内部会进行自动重连。

用户可通过监听 onRoomStateChanged 回调实时监控自己在本房间内的连接状态。在登录房间时将参数 config 中的 isUserStatusNotify 设置为 “true” 的前提下,房间内的其他用户可通过 onRoomUserUpdate 回调获取到某用户连接状态变化的通知。

房间状态示意图

房间断连后重连的情况有如下三种:

情况一:在服务端判断用户 A 心跳超时前重连成功

断线重连机制是什么?RTC中如何实现断线重连机制

如果用户 A 短暂断线,但是在 90s 内重连成功了,那么用户 B 不会收到 onRoomUserUpdate 的回调通知。

  • T0 = 0s:用户 A 的 SDK 收到客户端发起的 loginRoom 请求。
  • T1 ≈ T0 + 120 ms:通常在调用 loginRoom 120 ms 后,客户端可以加入房间。加入房间过程中,用户 A 的客户端会收到 2 次 onRoomStateChanged 回调,分别通知客户端正在连接房间(logining)以及连接房间成功(logined)。
  • T2 ≈ T1 + 100 ms:因网络传输延迟,用户 B 约在 100 ms 后收到 onRoomUserUpdate 回调以通知客户端用户 A 加入房间。
  • T3:某个时间点,用户 A 因网络断开等原因导致上行网络变差。SDK 会尝试重新加入房间,同时客户端会收到 onRoomStateChanged 回调以通知客户端用户 A 正在断线重连。
  • T5 = T3 + time(小于 90s):用户 A 在重连时间内恢复网络,重连成功。会收到 onRoomStateChanged 回调以通知客户端用户 A 重连成功。

情况二:在服务端判断用户 A 心跳超时后重连成功:

断线重连机制是什么?RTC中如何实现断线重连机制
  • T0、T1、T2、T3 时刻的情况同“情况一:在服务端判断用户 A 心跳超时前重连成功”中的 T0、T1、T2、T3。
  • T4′ ≈ T3 + 90s:用户 B 此时收到 onRoomUserUpdate 回调以通知用户 A 已断线。
  • T5′ = T3 + time(大于 90s,小于 20 min):用户 A 在重连时间内恢复网络,重连成功。会收到 onRoomStateChanged 回调以通知客户端用户 A 重连成功。
  • T6′ ≈ T5′ + 100 ms:因网络传输延迟,用户 B 约在 100 ms 后收到 onRoomUserUpdate 回调以通知客户端用户 A 加入房间。

情况三:用户 A 重连失败:

断线重连机制是什么?RTC中如何实现断线重连机制
  • T0、T1、T2、T3 时刻的情况同“情况一:在服务端判断用户 A 心跳超时前重连成功”中的 T0、T1、T2、T3。
  • T4” ≈ T3 + 90s:用户 B 此时收到 onRoomUserUpdate 回调以通知用户 A 已断线。
  • T5” = T3 + 20 min:如果用户 A 连续 20 min 内无法重新加入房间,SDK 不再继续尝试重新连接。用户 A 将会收到 onRoomStateChanged 回调以通知客户端重连失败。

以上就是ZEGO音视频SDK中的房间重连逻辑说明。当然,在RTC中还有常见的推流重连、拉流重连,详细的重连逻辑处理可阅读《Express SDK 是否支持断线重连机制?》进行了解。

原创文章,作者:ZEGO即构科技,如若转载,请注明出处:https://market-blogs.zego.im/reports-baike/1262/

(0)
上一篇 4月 19, 2024 3:59 下午
下一篇 4月 23, 2024 7:05 上午

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注