当用户使用 Agora SDK 进行音视频通话或互动直播时,他会有多个 Agora 频道连接状态。本文介绍 Agora 频道如何判断用户在通信的各个阶段处于什么连接状态以及各状态的转变过程。
为帮助开发者更好地了解和管理用户在频道内的连接状态,Agora Web SDK 从 v2.5.1 起新增 connection-state-change
回调。当用户连接状态发生改变时,SDK 会触发该回调,并在回调中明确当前的连接状态和发生状态改变的原因。
该回调下,SDK 有以下连接状态:
下图展示连接状态发生改变的触发时机:
通信过程中,你可以通过调用 Client.getConnectionState
方法获取当前的连接状态。
通信过程中,如果 SDK 因网络等原因,断开与服务器的连接,SDK 会自动开启断线重连机制。
下图展示从用户 UID 1 加入频道,到连接中断,再到连接完全失败过程中,本地及远端用户 UID 2 会收到的回调:
其中:
Client.join
请求。Client.on("connection-state-change", CONNECTING)
回调;加入后收到 Client.on("connection-state-change", CONNECTED)
和 Client.on("connected")
回调。Client.on("peer-online")
回调。Stream.publish
发布本地流。Client.on("stream-added")
回调,表示 UID 1 已发布音视频流。UID 2 可以调用 Stream.subscribe
方法注册 UID 1 用户的音视频流。Client.on("stream-removed")
回调。同时,SDK 继续尝试重连。Client.on("connection-state-change", CONNECTING)
。Client.on("peer-leave")
回调。同时,SDK 仍旧尝试重连。Client.on("connection-state-change", CONNECTED)
。Client.on("peer-online")
。进程被杀时 SDK 会触发的回调,请参考 FAQ:SDK 对断网、杀进程的处理。