agora::rtc::IRtcConnectionObserver类 参考
IRtcConnectionObserver 类,用于监听 SDK 的连接状态。
构造及析构函数说明
~IRtcConnectionObserver()
|
成员函数说明
onApiCallExecuted()
|
API 方法已执行回调。
参数
参数名 | 描述 |
---|---|
err | 当方法调用失败时 SDK 返回的错误码。如果该方法调用成功,SDK 会返回 0。 |
api | SDK 执行的 API 方法。 |
result | SDK 调用 API 的结果。 |
onChangeRoleFailure()
|
本地用户角色切换失败时触发。
onChangeRoleSuccess()
|
本地用户角色变更时触发。
参数
参数名 | 描述 |
---|---|
oldRole | 本地用户变更前的角色: CLIENT_ROLE_TYPE 。 |
newRole | 本地用户变更前的角色: CLIENT_ROLE_TYPE 。 |
onChannelMediaRelayStateChanged()
|
跨频道媒体流转发状态发生改变回调。
当跨频道媒体流转发状态发生改变时,SDK 会触发该回调,并报告当前的转发状态以及相关的错误信息。
RELAY_STATE_IDLE(0)
: SDK 正在初始化。RELAY_STATE_CONNECTING(1)
: SDK 尝试跨频道。RELAY_STATE_RUNNING(2)
: 源频道主播成功加入目标频道。RELAY_STATE_FAILURE(3)
: 发生异常,详见 code 中提示的错误信息。RELAY_OK(0)
: 一切正常。RELAY_ERROR_SERVER_ERROR_RESPONSE(1)
: 服务器回应出错。RELAY_ERROR_SERVER_NO_RESPONSE(2)
: 服务器无回应。你可以调用disconnect
方法离开频道。RELAY_ERROR_NO_RESOURCE_AVAILABLE(3)
: SDK 无法获取服务,可能是因为服务器资源有限导致。RELAY_ERROR_FAILED_JOIN_SRC(4)
: 服务器加入源频道失败。RELAY_ERROR_FAILED_JOIN_DEST(5)
: 服务器加入目标频道失败。RELAY_ERROR_FAILED_PACKET_RECEIVED_FROM_SRC(6)
: 服务器未收到源频道发送的数据。RELAY_ERROR_FAILED_PACKET_SENT_TO_DEST(7)
: 源频道发送数据失败。RELAY_ERROR_SERVER_CONNECTION_LOST(8)
: SDK 因网络质量不佳与服务器断开。你可以调用disconnect
方法离开当前频道。RELAY_ERROR_INTERNAL_ERROR(9)
: 服务器内部出错。RELAY_ERROR_SRC_TOKEN_EXPIRED(10)
: 源频道的 Token 已过期。RELAY_ERROR_DEST_TOKEN_EXPIRED(11)
: 目标频道的 Token 已过期。
参数
参数名 | 描述 |
---|---|
state | 跨频道媒体流转发状态: |
code | 跨频道媒体流转发出错的错误码: |
onConnected()
|
SDK 与频道的连接状态变更为 CONNECTION_STATE_CONNECTED(3)
时触发。
参数
参数名 | 描述 |
---|---|
connectionInfo | 连接信息: TConnectionInfo 。 |
reason | 连接状态变更原因: CONNECTION_CHANGED_REASON_TYPE 。 |
onConnecting()
|
SDK 与频道的连接状态变更为 CONNECTION_STATE_CONNECTING(2)
时触发。
参数
参数名 | 描述 |
---|---|
connectionInfo | 连接信息: TConnectionInfo 。 |
reason | 连接状态变更原因: CONNECTION_CHANGED_REASON_TYPE 。 |
onConnectionFailure()
|
SDK 与频道的连接状态变更为 CONNECTION_STATE_FAILED(5)
时触发。
参数
参数名 | 描述 |
---|---|
connectionInfo | 连接信息: TConnectionInfo 。 |
reason | 连接状态变更原因: CONNECTION_CHANGED_REASON_TYPE 。 |
onConnectionLost()
|
SDK 与频道断开连接时触发。
参数
参数名 | 描述 |
---|---|
connectionInfo | 连接信息: TConnectionInfo 。 |
onDisconnected()
|
SDK 与频道的连接状态变更为 CONNECTION_STATE_DISCONNECTED(1)
时触发。
参数
参数名 | 描述 |
---|---|
connectionInfo | 连接信息: TConnectionInfo 。 |
reason | 连接状态变更原因: CONNECTION_CHANGED_REASON_TYPE 。 |
onEncryptionError()
|
内置加密出错回调。
调用 enableEncryption 开启加密后,如果发流端、收流端出现加解密出错,SDK 会触发该回调。
参数
参数名 | 描述 |
---|---|
errorType | 加密错误类型。 |
onError()
|
发生错误回调。
该回调方法表示 SDK 运行时出现了网络或媒体相关的错误。通常情况下,SDK 上报的错误意味着 SDK 无法自动恢复,需要 App 干预或提示用户。
参数
参数名 | 描述 |
---|---|
error | 错误码。 |
msg | 错误描述。 |
onLastmileProbeResult()
|
通话前网络上下行 Last mile 质量探测报告回调。
调用 startLastmileProbeTest 方法 30 秒之后触发该回调。
参数
参数名 | 描述 |
---|---|
result | 上下行 Last mile 质量探测结果: LastmileProbeResult 。 |
onLastmileQuality()
|
报告 last-mile 网络质量。
SDK 在调用 startLastmileProbeTest 两秒后触发该回调。
参数
参数名 | 描述 |
---|---|
quality | last-mile 网络质量: QUALITY_TYPE 。 |
onNetworkTypeChanged()
|
本地网络类型发生改变回调。
本地网络连接类型发生改变时,SDK 会触发该回调,并在回调中明确当前的网络连接类型。 你可以通过该回调获取正在使用的网络类型;当连接中断时,该回调能辨别引起中断的原因是网络切换还是网络条件不好。
参数
参数名 | 描述 |
---|---|
type | 网络连接类型: NETWORK_TYPE 。 |
onReconnected()
|
onReconnecting()
|
SDK 与频道的连接状态变更为 CONNECTION_STATE_RECONNECTING(4)
时触发。
参数
参数名 | 描述 |
---|---|
connectionInfo | 连接信息: TConnectionInfo 。 |
reason | 连接状态变更原因: CONNECTION_CHANGED_REASON_TYPE 。 |
onTokenPrivilegeDidExpire()
|
Token 已过期回调。
在通话过程中如果 Token 已失效,SDK 会触发该回调,提醒 app 更新 Token。
当收到该回调时,你需要重新在服务端生成新的 Token,然后调用 connect
重新连接频道。
onTokenPrivilegeWillExpire()
|
Token 服务将在 30s 内过期回调。
在通话过程中如果 Token 即将失效,SDK 会提前 30 秒触发该回调,提醒 app 更新 Token。
当收到该回调时,你需要重新在服务端生成新的 Token,然后调用 renewToken 将新生成的 Token 传给 SDK。
参数
参数名 | 描述 |
---|---|
token | 即将过期的 Token。 |
onTransportStats()
onUserJoined()
onUserLeft()
|
远端用户离开频道时触发。
你可以通过 reason
参数获取用户离开频道的原因。
参数
参数名 | 描述 |
---|---|
userId | 用户 ID。 |
reason | 离开频道原因: USER_OFFLINE_REASON_TYPE 。 |
onUserNetworkQuality()
|
通话中每个用户的网络上下行 last mile 质量报告回调。
该回调描述每个用户在通话中的 last mile 网络状态,其中 last mile 是指设备到声网边缘服务器的网络状态。
该回调每 2 秒触发一次。如果远端有多个用户,该回调每 2 秒会被触发多次。
参数
参数名 | 描述 |
---|---|
userId | 用户 ID。表示该回调报告的是持有该 ID 的用户的网络质量。 |
txQuality | 该用户的上行网络质量,基于发送码率、上行丢包率、平均往返时延和网络抖动计算。该值代表当前的上行网络质量,帮助判断是否可以支持当前设置的视频编码属性。 假设上行码率是 1000 Kbps,那么支持直播场景下 640 × 480 的分辨率、15 fps 的帧率没有问题,但是支持 1280 × 720 的分辨率就会有困难。详见 QUALITY_TYPE 。 |
rxQuality | 该用户的下行网络质量,基于下行网络的丢包率、平均往返延时和网络抖动计算。详见 QUALITY_TYPE 。 |