すべてのプロダクト
Search
ドキュメントセンター

ApsaraVideo Live:チャンネル接続ステータス管理

最終更新日:Jun 20, 2025

このトピックは、さまざまなチャンネル接続ステータス、ステータス変更の理由、および推奨される操作を理解するのに役立ちます。

概要

リアルタイムの音声とビデオのシナリオでは、クライアントとサーバー間の接続ステータスは、ユーザーがチャンネルに参加または退出するにつれて変化します。接続ステータスは、再接続または切断を引き起こすネットワークの問題が原因で変更される場合もあります。したがって、チャンネル接続ステータスの効果的な管理は非常に重要です。ユーザーのリアルタイムの音声とビデオのエクスペリエンスに直接影響し、アプリケーション全体の安定性と信頼性に関係します。

仕組み

接続ステータス

接続ステータスが変更されると、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);
    }
}

ステータスの説明

接続ステータス

接続ステータス

説明

初期化

joinChannel を呼び出す前の初期ステータスです。

接続中

joinChannel メソッドを呼び出した後の瞬間的なステータスです。

接続済み

アプリがチャンネルに正常に参加した後に発生します。

SDK は onJoinChannelResult コールバックもトリガーして、ローカルクライアントがチャンネルに参加したことを報告します。この時点で、SDK はチャンネルの音声とビデオを自動的に公開またはサブスクライブし、ユーザーは公開とサブスクライブを手動で制御することもできます。

切断済み

leaveChannel を呼び出した後に発生します。

再接続中

接続が中断されたときに発生します。SDK は中断後に自動的に再接続を試みます。

チャンネルへの再参加が成功した場合、SDK は onConnectionStatusChange をトリガーします

(AliRtcConnectionStatusConnected, AliRtcConnectionChangedSignalingJoinChannelSuccess)

失敗

接続に失敗しました。 SDK が 100 秒以内にチャンネルに参加できず、再接続の試行を停止したときに発生します。この時点で、ユーザーは leaveChannel を呼び出し、ローカルネットワークを確認し、ネットワークが正常に戻った後に joinChannel を再度呼び出す必要があります。

ステータス理由の説明

接続ステータス (status)

ステータス理由の説明 (reason)

初期化

理由なし、初期ステータス。

接続中

接続中:チャンネルに参加しています。

接続済み

JoinChannelSuccess:チャンネルに正常に参加しました。

切断済み

LeaveRoom:ユーザーが積極的にチャンネルを退出しました。

再接続中

  • HeartbeatTimeout:一定期間サーバーからデータを受信していません。考えられる原因には、ダウンストリームネットワークの問題または高いパケット損失が含まれます。

  • NetworkInterrupted:クライアントネットワークの切断。

失敗

JoinChannelFailure:チャンネルへの参加または再参加に失敗しました。考えられる原因には、永続的なネットワーク切断または無効なトークンが含まれます。