全部产品
Search
文档中心

ApsaraVideo Live:Manajemen status koneksi saluran

更新时间:Jul 06, 2025

Topik ini membantu Anda memahami berbagai status koneksi saluran, alasan perubahan status, serta tindakan yang direkomendasikan.

Ikhtisar

Dalam skenario audio dan video real-time, status koneksi antara klien dan server berubah saat pengguna bergabung atau meninggalkan saluran. Status koneksi juga dapat berubah akibat masalah jaringan yang menyebabkan rekoneksi atau pemutusan. Oleh karena itu, manajemen yang efektif terhadap status koneksi saluran sangat penting karena secara langsung memengaruhi pengalaman audio dan video real-time pengguna serta stabilitas dan keandalan aplikasi secara keseluruhan.

Cara kerjanya

Status koneksi

Saat status koneksi berubah, ARTC SDK memicu callback onConnectionStatusChange. Gambar berikut menunjukkan berbagai status koneksi dan bagaimana mereka berubah saat pengguna bergabung dan meninggalkan saluran.

Rekoneksi otomatis

Selama panggilan, jika koneksi terputus karena masalah jaringan, SDK secara otomatis mencoba untuk menyambung kembali. Gambar berikut menunjukkan callback yang diterima oleh Pengguna A dan Pengguna B dalam proses berikut: Pengguna B sudah berada di saluran, Pengguna A bergabung dengan saluran, mengalami masalah jaringan, secara otomatis menyambung kembali, dan gagal menyambung kembali.

  • Pada T0: Pengguna A memulai permintaan joinChannel.

  • Pada T1: Pengguna A berhasil bergabung dengan saluran dan menerima callback onJoinChannelResult(result=0) dan onConnectionStatusChange.

  • Pada T2: Pengguna B mendeteksi bahwa Pengguna A telah bergabung dengan saluran dan menerima callback onRemoteUserOnLineNotify.

  • Pada T3: Koneksi Pengguna A terputus karena pemutusan jaringan klien atau alasan lainnya.

  • Pada T4: SDK Pengguna A mendeteksi pemutusan jaringan atau tidak menerima data apa pun dari server selama periode waktu tertentu, memulai rekoneksi otomatis, dan Pengguna A menerima callback onConnectionStatusChange.

  • Pada T5: Setelah beberapa kali percobaan ulang dalam 100 detik, SDK masih tidak dapat bergabung kembali dengan saluran dan berhenti mencoba. SDK mengirimkan callback onConnectionStatusChange kepada Pengguna A. Pada titik ini, pengguna perlu meninggalkan saluran saat ini, memeriksa jaringan lokal, dan bergabung kembali dengan saluran setelah jaringan kembali normal.

Kode contoh

Android

onConnectionStatusChange - Callback Perubahan Status Koneksi Jaringan

@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("Status koneksi jaringan berubah menjadi: " + status + ", alasan: " + reason);
            }
        }
    });
}

IOS

onConnectionStatusChange - Callback Perubahan Status Koneksi Jaringan

/**
 * @brief Callback perubahan status koneksi saluran
 * @param status Nilai status saat ini, lihat enumerasi AliRtcConnectionStatus untuk nilai yang sesuai
 * @param reason Alasan spesifik perubahan status, lihat enumerasi AliRtcConnectionStatusChangeReason untuk nilai yang sesuai
*/
- (void)onConnectionStatusChange:(AliRtcConnectionStatus)status reason:(AliRtcConnectionStatusChangeReason)reason{
    NSString *stateStr = [NSString stringWithFormat:@"\nStatus jaringan: %@ status: %ld  Alasan: %@ alasan: %ld\n",[self callbackNetstatus:status], (long)status,[self callbackNetstatusReason:reason], (long)reason];
    MyLog(@"%@", stateStr);
}

Windows

OnConnectionStatusChange - Callback Perubahan Status Koneksi Jaringan

void AliSDKEventListener::OnConnectionStatusChange(int status, int reason)
{
    if (win_rtc_listener_)
    {
        win_rtc_listener_->OnConnectionStatusChange(status, reason);
    }
}

Deskripsi status

Status koneksi

Status koneksi

Deskripsi

Init

Status awal, terjadi sebelum memanggil joinChannel.

Connecting

Status sementara setelah memanggil metode joinChannel.

Connected

Terjadi setelah aplikasi berhasil bergabung dengan saluran.

SDK juga memicu callback onJoinChannelResult untuk melaporkan bahwa klien lokal telah bergabung dengan saluran. Pada titik ini, SDK secara otomatis menerbitkan atau berlangganan audio dan video di saluran, dan pengguna juga dapat mengontrol penerbitan dan langganan secara manual.

Disconnected

Terjadi setelah memanggil leaveChannel.

Reconnecting

Terjadi saat koneksi terganggu. SDK secara otomatis mencoba menyambung kembali setelah gangguan.

Jika berhasil bergabung kembali dengan saluran, SDK memicu onConnectionStatusChange

(AliRtcConnectionStatusConnected, AliRtcConnectionChangedSignalingJoinChannelSuccess)

Failed

Koneksi gagal. Terjadi saat SDK tidak dapat bergabung dengan saluran dalam 100 detik dan berhenti mencoba menyambung kembali. Pada titik ini, pengguna perlu memanggil leaveChannel, memeriksa jaringan lokal, dan memanggil joinChannel lagi setelah jaringan kembali normal.

Deskripsi alasan status

Status koneksi (status)

Deskripsi alasan status (reason)

Init

Tidak ada alasan, status awal.

Connecting

Menghubungkan: Bergabung dengan saluran.

Connected

JoinChannelSuccess: Berhasil bergabung dengan saluran.

Disconnected

LeaveRoom: Pengguna secara aktif meninggalkan saluran.

Reconnecting

  • HeartbeatTimeout: Tidak ada data yang diterima dari server selama periode waktu tertentu. Kemungkinan penyebab termasuk masalah jaringan downstream atau tingkat kehilangan paket yang tinggi.

  • NetworkInterrupted: Pemutusan jaringan klien.

Failed

JoinChannelFailure: Gagal bergabung atau bergabung kembali dengan saluran. Kemungkinan penyebab termasuk pemutusan jaringan yang berkelanjutan atau token tidak valid.