agora::rtc::IRtcConnectionObserver类 参考
- C++
更新时间不可用
详细描述
IRtcConnectionObserver 类,用于监听 SDK 的连接状态。
构造及析构函数说明
~IRtcConnectionObserver()
virtual agora::rtc::IRtcConnectionObserver::~IRtcConnectionObserver()成员函数说明
onConnected()
virtual void agora::rtc::IRtcConnectionObserver::onConnected(const TConnectionInfo & connectionInfo, CONNECTION_CHANGED_REASON_TYPE reason)SDK 与频道的连接状态变更为 CONNECTION_STATE_CONNECTED(3) 时触发。
| 参数名 | 描述 |
|---|---|
connectionInfo | 连接信息: TConnectionInfo。 |
reason | 连接状态变更原因: CONNECTION_CHANGED_REASON_TYPE 。 |
onDisconnected()
virtual void agora::rtc::IRtcConnectionObserver::onDisconnected(const TConnectionInfo & connectionInfo, CONNECTION_CHANGED_REASON_TYPE reason)SDK 与频道的连接状态变更为 CONNECTION_STATE_DISCONNECTED(1) 时触发。
| 参数名 | 描述 |
|---|---|
connectionInfo | 连接信息: TConnectionInfo。 |
reason | 连接状态变更原因: CONNECTION_CHANGED_REASON_TYPE 。 |
onConnecting()
virtual void agora::rtc::IRtcConnectionObserver::onConnecting(const TConnectionInfo & connectionInfo, CONNECTION_CHANGED_REASON_TYPE reason)SDK 与频道的连接状态变更为 CONNECTION_STATE_CONNECTING(2) 时触发。
| 参数名 | 描述 |
|---|---|
connectionInfo | 连接信息: TConnectionInfo。 |
reason | 连接状态变更原因: CONNECTION_CHANGED_REASON_TYPE 。 |
onReconnecting()
virtual void agora::rtc::IRtcConnectionObserver::onReconnecting(const TConnectionInfo & connectionInfo, CONNECTION_CHANGED_REASON_TYPE reason)SDK 与频道的连接状态变更为 CONNECTION_STATE_RECONNECTING(4) 时触发。
| 参数名 | 描述 |
|---|---|
connectionInfo | 连接信息: TConnectionInfo。 |
reason | 连接状态变更原因: CONNECTION_CHANGED_REASON_TYPE 。 |
onConnectionLost()
virtual void agora::rtc::IRtcConnectionObserver::onConnectionLost(const TConnectionInfo & connectionInfo)SDK 与频道断开连接时触发。
| 参数名 | 描述 |
|---|---|
connectionInfo | 连接信息: TConnectionInfo。 |
onLastmileQuality()
virtual void agora::rtc::IRtcConnectionObserver::onLastmileQuality(const QUALITY_TYPE quality)报告 last-mile 网络质量。
SDK 在调用 startLastmileProbeTest 两秒后触发该回调。
| 参数名 | 描述 |
|---|---|
quality | last-mile 网络质量: QUALITY_TYPE 。 |
onLastmileProbeResult()
virtual void agora::rtc::IRtcConnectionObserver::onLastmileProbeResult(const LastmileProbeResult & result)通话前网络上下行 Last mile 质量探测报告回调。
调用 startLastmileProbeTest 方法 30 秒之后触发该回调。
| 参数名 | 描述 |
|---|---|
result | 上下行 Last mile 质量探测结果: LastmileProbeResult。 |
onTokenPrivilegeWillExpire()
virtual void agora::rtc::IRtcConnectionObserver::onTokenPrivilegeWillExpire(const char * token)Token 服务将在 30s 内过期回调。
在通话过程中如果 Token 即将失效,SDK 会提前 30 秒触发该回调,提醒 app 更新 Token。
当收到该回调时,你需要重新在服务端生成新的 Token,然后调用 renewToken 将新生成的 Token 传给 SDK。
| 参数名 | 描述 |
|---|---|
token | 即将过期的 Token。 |
onTokenPrivilegeDidExpire()
virtual void agora::rtc::IRtcConnectionObserver::onTokenPrivilegeDidExpire()Token 已过期回调。
在通话过程中如果 Token 已失效,SDK 会触发该回调,提醒 app 更新 Token。
当收到该回调时,你需要重新在服务端生成新的 Token,然后调用 connect 重新连接频道。
onConnectionFailure()
virtual void agora::rtc::IRtcConnectionObserver::onConnectionFailure(const TConnectionInfo & connectionInfo, CONNECTION_CHANGED_REASON_TYPE reason)SDK 与频道的连接状态变更为 CONNECTION_STATE_FAILED(5) 时触发。
| 参数名 | 描述 |
|---|---|
connectionInfo | 连接信息: TConnectionInfo。 |
reason | 连接状态变更原因: CONNECTION_CHANGED_REASON_TYPE 。 |
onUserJoined()
virtual void agora::rtc::IRtcConnectionObserver::onUserJoined(user_id_t userId)远端用户加入频道时触发。
你可以通过该回调获取远端用户的 ID。
| 参数名 | 描述 |
|---|---|
userId | 用户 ID。 |
onUserLeft()
virtual void agora::rtc::IRtcConnectionObserver::onUserLeft(user_id_t userId, USER_OFFLINE_REASON_TYPE reason)远端用户离开频道时触发。
你可以通过 reason 参数获取用户离开频道的原因。
| 参数名 | 描述 |
|---|---|
userId | 用户 ID。 |
reason | 离开频道原因: USER_OFFLINE_REASON_TYPE 。 |
onTransportStats()
virtual void agora::rtc::IRtcConnectionObserver::onTransportStats(const RtcStats & stats)报告连接的传输统计信息。
当连接状态为 CONNECTION_STATE_CONNECTED 时,SDK 每两秒触发一次回调。
| 参数名 | 描述 |
|---|---|
stats | 连接统计信息: RtcStats。 |
onChangeRoleSuccess()
virtual void agora::rtc::IRtcConnectionObserver::onChangeRoleSuccess(CLIENT_ROLE_TYPE oldRole, CLIENT_ROLE_TYPE newRole)本地用户角色变更时触发。
| 参数名 | 描述 |
|---|---|
oldRole | 本地用户变更前的角色:CLIENT_ROLE_TYPE。 |
newRole | 本地用户变更前的角色:CLIENT_ROLE_TYPE。 |
onChangeRoleFailure()
virtual void agora::rtc::IRtcConnectionObserver::onChangeRoleFailure()本地用户角色切换失败时触发。
onUserNetworkQuality()
virtual void agora::rtc::IRtcConnectionObserver::onUserNetworkQuality(user_id_t userId, QUALITY_TYPE txQuality, QUALITY_TYPE rxQuality)通话中每个用户的网络上下行 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 。 |
onNetworkTypeChanged()
virtual void agora::rtc::IRtcConnectionObserver::onNetworkTypeChanged(NETWORK_TYPE type)本地网络类型发生改变回调。
本地网络连接类型发生改变时,SDK 会触发该回调,并在回调中明确当前的网络连接类型。 你可以通过该回调获取正在使用的网络类型;当连接中断时,该回调能辨别引起中断的原因是网络切换还是网络条件不好。
| 参数名 | 描述 |
|---|---|
type | 网络连接类型: NETWORK_TYPE 。 |
onApiCallExecuted()
virtual void agora::rtc::IRtcConnectionObserver::onApiCallExecuted(int err, const char * api, const char * result)API 方法已执行回调。
| 参数名 | 描述 |
|---|---|
err | 当方法调用失败时 SDK 返回的错误码。如果该方法调用成功,SDK 会返回 0。 |
api | SDK 执行的 API 方法。 |
result | SDK 调用 API 的结果。 |
onError()
virtual void agora::rtc::IRtcConnectionObserver::onError(ERROR_CODE_TYPE error, const char * msg)发生错误回调。
该回调方法表示 SDK 运行时出现了网络或媒体相关的错误。通常情况下,SDK 上报的错误意味着 SDK 无法自动恢复,需要 App 干预或提示用户。
| 参数名 | 描述 |
|---|---|
error | 错误码。 |
msg | 错误描述。 |
onChannelMediaRelayStateChanged()
virtual void agora::rtc::IRtcConnectionObserver::onChannelMediaRelayStateChanged(int state, int code)跨频道媒体流转发状态发生改变回调。
当跨频道媒体流转发状态发生改变时,SDK 会触发该回调,并报告当前的转发状态以及相关的错误信息。
| 参数名 | 描述 |
|---|---|
state | 跨频道媒体流转发状态: |
-
RELAY_STATE_IDLE(0): SDK 正在初始化。 -
RELAY_STATE_CONNECTING(1): SDK 尝试跨频道。 -
RELAY_STATE_RUNNING(2): 源频道主播成功加入目标频道。 -
RELAY_STATE_FAILURE(3): 发生异常,详见 code 中提示的错误信息。 表格内容超出当前宽度,可横向滚动查看更多列。参数 参数名 描述 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 已过期。
onEncryptionError()
virtual void agora::rtc::IRtcConnectionObserver::onEncryptionError(ENCRYPTION_ERROR_TYPE errorType)内置加密出错回调。
调用 enableEncryption 开启加密后,如果发流端、收流端出现加解密出错,SDK 会触发该回调。
| 参数名 | 描述 |
|---|---|
errorType | 加密错误类型。 |