All Products
Search
Document Center

ApsaraVideo Live:Pengiriman dan Penerimaan Pesan Kustom

Last Updated:Mar 12, 2026

Topik ini menjelaskan cara mengirim dan menerima pesan menggunakan Data Channel dalam ApsaraVideo Real-time Communication (ARTC) SDK.

Kode Contoh

Pengiriman dan penerimaan pesan kustom client Android: Android/ARTCExample/BasicUsage/src/main/java/com/aliyun/artc/api/basicusage/DataChannelMessage/DataChannelMessageActivity.java.

Pengiriman dan penerimaan pesan kustom client iOS: iOS/ARTCExample/BasicUsage/DataChannelMessage/DataChannelMessageVC.swift.

Pengiriman dan penerimaan pesan kustom client Harmony: Harmony/ARTCExample/entry/src/main/ets/pages/basicusage/DataChannelMessagePage.ets.

Prasyarat

Catatan

Fitur DataChannel ARTC bergantung pada streamer yang mendorong aliran audio atau video. Oleh karena itu, gunakan fitur ini hanya setelah membangun panggilan dan mulai mendorong audio atau video. Jika skenario Anda tidak memerlukan streaming audio atau video aktual, dorong aliran audio senyap untuk memenuhi dependensi ini dan mengaktifkan DataChannel.

Implementasi Fitur

image.jpeg

Catatan

Streamer dapat mengirim dan menerima pesan. Penonton hanya dapat menerima pesan.

Aktifkan Saluran Pesan Kustom

ARTC tidak mengaktifkan saluran pesan kustom secara default. Panggil antarmuka setParameter untuk mengaktifkannya. Anda dapat memanggil antarmuka ini sebelum atau setelah bergabung ke channel.

Android

param = "{\"data\":{\"enablePubDataChannel\":true" + ",\"enableSubDataChannel\":true}}";
mAliRtcEngine.setParameter(param);

iOS

NSString* parameter = [NSString stringWithFormat:@"{\"data\":{\"enablePubDataChannel\":true,\"enableSubDataChannel\":true}}"];
[self.engine setParameter:parameter];

Harmony

const param = '{"data":{"enablePubDataChannel":true,"enableSubDataChannel":true}}';
this.rtcEngine.setParameter(param);

Web

// Client Web harus memanggil ini sebelum joinChannel
mAliRtcEngine.setParameter(
  JSON.stringify({
    data: {
      enablePubDataChannel: true,
      enableSubDataChannel: true,
    },
  }),
);

Mac

NSString* parameter = [NSString stringWithFormat:@"{\"data\":{\"enablePubDataChannel\":true,\"enableSubDataChannel\":true}}"];
[self.engine setParameter:parameter];

Windows

char * param = "{\"data\":{\"enablePubDataChannel\":true,\"enableSubDataChannel\":true}}";
mAliRtcEngine->SetParameter(param);

Kirim Pesan Kustom

Setelah DataChannel terbentuk, gunakan antarmuka sendDataChannelMsg.

Penting
  • Streamer dapat mengirim dan menerima pesan. Penonton hanya dapat menerima pesan.

  • Panggil setParameter untuk mengaktifkan saluran pesan kustom.

  • Pengiriman data memiliki batasan berikut:

    • Batas bitrate: 30 KB/detik.

    • Saluran data dapat mengirim hingga 60 paket data per detik, dengan setiap paket dibatasi hingga 1 KB.

Android

AliRtcEngine.AliRtcDataChannelMsg msg = new AliRtcEngine.AliRtcDataChannelMsg();
msg.type = AliRtcEngine.AliRtcDataMsgType.AliEngineDataMsgCustom;
/* Semua jenis data didukung, termasuk teks dan gambar. */
msg.data =  xxxx;
mAliRtcEngine.sendDataChannelMsg(msg);

iOS

AliRtcDataChannelMsg* msg = [[AliRtcDataChannelMsg alloc] init];
msg.type = AliRtcDataMsgCustom;
/* Semua jenis data didukung, termasuk teks dan gambar. */
msg.data = xxxxx;
[self.engine sendDataChannelMessage:msg];

Harmony

const msg = new AliRtcDataChannelMsg();
msg.type = AliRtcDataMsgType.AliRtcDataChannelCustom;

const seiData = this.stringToArrayBuffer(this.SendText);
msg.data = seiData;

// Kirim pesan
const res = this.rtcEngine.sendDataChannelMsg(msg);

Web

const data = new TextEncoder().encode('xxxx');
// Data dapat berupa tipe apa pun (seperti teks atau gambar), dalam format ArrayBuffer.
mAliRtcEngine.sendDataChannelMessage(
  new AliRtcDataChannelMsg(data), 
);

Mac

AliRtcDataChannelMsg* msg = [[AliRtcDataChannelMsg alloc] init];
msg.type = AliRtcDataMsgCustom;
/* Semua jenis data didukung, termasuk teks dan gambar. */
msg.data = xxxxx;
[self.engine sendDataChannelMessage:msg];

Windows

AliEngineDataChannelMsg msg;
msg.type = AliEngineDataChannelCustom;
/* Semua jenis data didukung, termasuk teks dan gambar. */
msg.data =  data;
msg.dataLen = dataLength;
mAliRtcEngine->SendDataChannelMessage(msg);

Terima Pesan Kustom

Terima pesan kustom dengan mendengarkan callback onDataChannelMessage.

Android

// Saat AliRtcEngineNotify dipicu
public void onDataChannelMessage(String uid, AliRtcEngine.AliRtcDataChannelMsg msg) {
    /* TODO: Tulis logika untuk memproses pesan kustom. */
}

iOS

- (void)onDataChannelMessage:(NSString *_Nonnull)uid controlMsg:(AliRtcDataChannelMsg*_Nonnull)controlMsg {
	/* TODO: Tulis logika untuk memproses pesan kustom. */
}

Harmony

// Callback penerimaan pesan saluran data
listener.onDataChannelMessage((uid: string, msg: AliRtcDataChannelMsg) => {
  console.info(`Pesan saluran data diterima: uid=${uid}, type=${msg.type}`);
  /* TODO: Tulis logika untuk memproses pesan kustom. */
});

Web

mAliRtcEngine.on('dataChannelMsg', (uid, message) => {
  // Tulis logika untuk memproses pesan kustom.
  console.log('dataChannelMsg', uid, message);
});

Mac

- (void)onDataChannelMessage:(NSString *)uid controlMsg:(AliRtcDataChannelMsg *)controlMsg {
    /* TODO: Tulis logika untuk memproses pesan kustom. */
}

Windows

public:
virtual void OnDataChannelMessage(const char* uid, const AliEngineDataChannelMsg& msg) override {
    /* TODO: Tulis logika untuk memproses pesan kustom. */
}