# AgoraConnectionState (/zh-CN/api-reference/rtc/macos/enum-connectionstatetype)

> For AI agents: see the complete documentation index at [llms.txt](/llms.txt).

<a id="enum_connectionstatetype__parameters"></a>

## 枚举值 [#枚举值]

<ParameterList>
<a id="agoraconnectionstatedisconnected"></a>
<Parameter name="AgoraConnectionStateDisconnected">

（1）：SDK 与声网边缘服务器断开连接。该状态表示 SDK 处于以下阶段之一：调用 [joinChannelByToken\:channelId\:uid\:mediaOptions\:joinSuccess:](/zh-CN/api-reference/rtc/macos/channel#api_irtcengine_joinchannel2) 方法前的初始状态，或调用 [leaveChannel:](/zh-CN/api-reference/rtc/macos/channel#api_irtcengine_leavechannel) 方法后。

</Parameter>
<a id="agoraconnectionstateconnecting"></a>
<Parameter name="AgoraConnectionStateConnecting">

（2）：SDK 正在连接声网边缘服务器。该状态表示调用 [joinChannelByToken\:channelId\:uid\:mediaOptions\:joinSuccess:](/zh-CN/api-reference/rtc/macos/channel#api_irtcengine_joinchannel2) 方法后，SDK 正在与指定频道建立连接。连接成功后，SDK 会触发 `connectionChangedToState:reason:` 回调，并将状态切换为 `AgoraConnectionStateConnected`。连接建立后，SDK 会初始化媒体，并在准备就绪时触发 `didJoinChannel:withUid:elapsed:` 回调。

</Parameter>
<a id="agoraconnectionstateconnected"></a>
<Parameter name="AgoraConnectionStateConnected">

（3）：SDK 已连接到声网边缘服务器。该状态还表示用户已加入频道，并可在频道中发布或订阅媒体流。如果因网络中断或切换导致连接丢失，SDK 会自动尝试重连，并触发 `connectionChangedToState:reason:` 回调，通知当前状态变为 `AgoraConnectionStateReconnecting`。

</Parameter>
<a id="agoraconnectionstatereconnecting"></a>
<Parameter name="AgoraConnectionStateReconnecting">

（4）：SDK 正在持续重连声网边缘服务器。该状态表示 SDK 因网络问题与频道断开连接后，正在尝试重新加入频道：

- 若在 10 秒内未能重新加入频道，SDK 会触发 [rtcEngineConnectionDidLost:](/zh-CN/api-reference/rtc/macos/network#callback_irtcengineeventhandler_onconnectionlost) 回调，保持在该状态并继续重连。
- 若在断开连接 20 分钟后仍未成功重连，SDK 会触发 `connectionChangedToState:reason:` 回调，切换至 `AgoraConnectionStateFailed` 状态，并停止重连。

</Parameter>
<a id="agoraconnectionstatefailed"></a>
<Parameter name="AgoraConnectionStateFailed">

（5）：SDK 无法连接声网边缘服务器或加入频道，并停止重连。用户被服务端踢出、Token 失效或鉴权失败时，回调报告的 `reason` 可能不同，但进入该状态后的恢复流程一致：

- [joinChannelByToken\:channelId\:uid\:mediaOptions\:joinSuccess:](/zh-CN/api-reference/rtc/macos/channel#api_irtcengine_joinchannel2) 场景：先调用 [leaveChannel:](/zh-CN/api-reference/rtc/macos/channel#api_irtcengine_leavechannel)，等待 [rtcEngine\:connectionChangedToState\:reason:](/zh-CN/api-reference/rtc/macos/network#callback_irtcengineeventhandler_onconnectionstatechanged) 回调报告 `AgoraConnectionStateDisconnected`（1），再使用有效的新 Token 调用 [joinChannelByToken\:channelId\:uid\:mediaOptions\:joinSuccess:](/zh-CN/api-reference/rtc/macos/channel#api_irtcengine_joinchannel2)。如果未先离开频道，该方法会返回 -17（`AgoraErrorCodeJoinChannelRejected`）。
- [joinChannelExByToken\:connection\:delegate\:mediaOptions\:joinSuccess:](/zh-CN/api-reference/rtc/macos/channel#api_irtcengineex_joinchannelex) 场景：针对对应的 [AgoraRtcConnection](/zh-CN/api-reference/rtc/macos/class-rtcconnection) 调用 [leaveChannelEx\:leaveChannelBlock:](/zh-CN/api-reference/rtc/macos/channel#api_irtcengineex_leavechannelex)，等待该连接进入 `AgoraConnectionStateDisconnected`（1），再使用有效的新 Token 调用 [joinChannelExByToken\:connection\:delegate\:mediaOptions\:joinSuccess:](/zh-CN/api-reference/rtc/macos/channel#api_irtcengineex_joinchannelex)。如需只清理该连接，请使用 [leaveChannelEx\:leaveChannelBlock:](/zh-CN/api-reference/rtc/macos/channel#api_irtcengineex_leavechannelex)；调用 [leaveChannel:](/zh-CN/api-reference/rtc/macos/channel#api_irtcengine_leavechannel) 会离开当前加入的所有频道。

</Parameter>
</ParameterList>
