このトピックは、さまざまなチャンネル接続ステータス、ステータス変更の理由、および推奨される操作を理解するのに役立ちます。
概要
リアルタイムの音声とビデオのシナリオでは、クライアントとサーバー間の接続ステータスは、ユーザーがチャンネルに参加または退出するにつれて変化します。接続ステータスは、再接続または切断を引き起こすネットワークの問題が原因で変更される場合もあります。したがって、チャンネル接続ステータスの効果的な管理は非常に重要です。ユーザーのリアルタイムの音声とビデオのエクスペリエンスに直接影響し、アプリケーション全体の安定性と信頼性に関係します。
仕組み
接続ステータス
接続ステータスが変更されると、ARTC SDK は onConnectionStatusChange コールバックをトリガーします。次の図は、さまざまな接続ステータスと、ユーザーがチャンネルに参加および退出するときのステータスの変化を示しています。
自動再接続
通話中にネットワークの問題で接続が失われた場合、SDK は自動的に再接続を試みます。次の図は、次のプロセスでユーザー A とユーザー B が受信するコールバックを示しています。ユーザー B はすでにチャンネルに参加しており、ユーザー A はチャンネルに参加し、ネットワークの問題が発生し、自動的に再接続し、再接続に失敗します。
T0:ユーザー A が
joinChannelリクエストを開始します。T1:ユーザー A がチャンネルに正常に参加し、
onJoinChannelResult(result=0)およびonConnectionStatusChangeコールバックを受信します。T2:ユーザー B は、ユーザー A がチャンネルに参加したことを検出し、
onRemoteUserOnLineNotifyコールバックを受信します。T3:クライアントのネットワーク切断などの理由により、ユーザー A の接続が失われます。
T4:ユーザー A の SDK はネットワークの切断を検出するか、一定期間サーバーからデータを受信せず、自動再接続を開始し、ユーザー A は
onConnectionStatusChangeコールバックを受信します。T5:100秒以内に複数回再試行した後も、SDK はチャンネルに再参加できず、試行を停止します。
onConnectionStatusChangeコールバックをユーザー A に送信します。この時点で、ユーザーは現在のチャンネルを退出してローカルネットワークを確認し、ネットワークが正常に戻った後にチャンネルに再参加する必要があります。
サンプルコード
Android
onConnectionStatusChange - ネットワーク接続ステータス変更コールバック
@Override
public void onConnectionStatusChange(AliRtcEngine.AliRtcConnectionStatus status, AliRtcEngine.AliRtcConnectionStatusChangeReason reason) {
super.onConnectionStatusChange(status, reason);
Log.e(TAG, "onConnectionStatusChange.");
ThreadUtils.runOnUiThread(new Runnable() {
@Override
public void run() {
if (mLogView != null) {
mLogView.logI("Network connection changed to: " + status + ", reason: " + reason); // ネットワーク接続が変更されました:
}
}
});
}IOS
onConnectionStatusChange - ネットワーク接続ステータス変更コールバック
/**
* @brief チャンネル接続ステータス変更コールバック
* @param status 現在のステータス値。対応する値については、AliRtcConnectionStatus 列挙型を参照してください。
* @param reason ステータス変更の具体的な理由。対応する値については、AliRtcConnectionStatusChangeReason 列挙型を参照してください。
*/
- (void)onConnectionStatusChange:(AliRtcConnectionStatus)status reason:(AliRtcConnectionStatusChangeReason)reason{
NSString *stateStr = [NSString stringWithFormat:@"\nNetwork status: %@ status: %ld Reason: %@ reason: %ld\n",[self callbackNetstatus:status], (long)status,[self callbackNetstatusReason:reason], (long)reason]; // ネットワークステータス
MyLog(@"%@", stateStr);
}Windows
OnConnectionStatusChange - ネットワーク接続ステータス変更コールバック
void AliSDKEventListener::OnConnectionStatusChange(int status, int reason)
{
if (win_rtc_listener_)
{
win_rtc_listener_->OnConnectionStatusChange(status, reason);
}
}ステータスの説明
接続ステータス
接続ステータス | 説明 |
初期化 |
|
接続中 |
|
接続済み | アプリがチャンネルに正常に参加した後に発生します。 SDK は |
切断済み |
|
再接続中 | 接続が中断されたときに発生します。SDK は中断後に自動的に再接続を試みます。 チャンネルへの再参加が成功した場合、SDK は onConnectionStatusChange をトリガーします (AliRtcConnectionStatusConnected, AliRtcConnectionChangedSignalingJoinChannelSuccess) |
失敗 | 接続に失敗しました。 SDK が 100 秒以内にチャンネルに参加できず、再接続の試行を停止したときに発生します。この時点で、ユーザーは |
ステータス理由の説明
接続ステータス (status) | ステータス理由の説明 (reason) |
初期化 | 理由なし、初期ステータス。 |
接続中 | 接続中:チャンネルに参加しています。 |
接続済み | JoinChannelSuccess:チャンネルに正常に参加しました。 |
切断済み | LeaveRoom:ユーザーが積極的にチャンネルを退出しました。 |
再接続中 |
|
失敗 | JoinChannelFailure:チャンネルへの参加または再参加に失敗しました。考えられる原因には、永続的なネットワーク切断または無効なトークンが含まれます。 |