全部产品
Search
文档中心

ApsaraVideo Live:Kirim dan terima pesan kustom

更新时间:Jan 10, 2026

Topik ini menjelaskan cara mengirim dan menerima pesan kustom serta menyediakan contoh kode.

Contoh kode

Kirim dan terima pesan kustom di Android: Android/ARTCExample/BasicUsage/src/main/java/com/aliyun/artc/api/basicusage/DataChannelMessage/DataChannelMessageActivity.java.

Kirim dan terima pesan kustom di iOS: iOS/ARTCExample/BasicUsage/DataChannelMessage/DataChannelMessageVC.swift.

Prasyarat

Implementasi

image.jpeg

Catatan

Pengguna dengan role streamer dapat mengirim dan menerima pesan. Pengguna dengan role viewer hanya dapat menerima pesan.

Aktifkan saluran pesan kustom

Saluran pesan kustom dinonaktifkan secara default di ARTC. Panggil metode setParameter untuk mengaktifkannya. Anda dapat memanggil metode 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

// Pada klien web, panggil ini sebelum joinChannel.
mAliRtcEngine.setParameter(
  JSON.stringify({
    data: {
      enablePubDataChannel: true,
      enableSubDataChannel: true,
    },
  }),
);

Windows

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

Kirim pesan kustom

Setelah Anda membuat saluran data, panggil metode sendDataChannelMsg untuk mengirim pesan.

Penting
  • Pengguna dengan role streamer dapat mengirim dan menerima pesan. Pengguna dengan role viewer hanya dapat menerima pesan.

  • Panggil setParameter untuk mengaktifkan saluran pesan kustom.

  • Batasan berikut berlaku untuk pengiriman data:

    • Bitrate maksimum adalah 30 KB/s.

    • Saluran data dapat mengirim maksimal 60 paket per detik. Setiap paket berukuran hingga 1 KB.

Android

AliRtcEngine.AliRtcDataChannelMsg msg = new AliRtcEngine.AliRtcDataChannelMsg();
msg.type = AliRtcEngine.AliRtcDataMsgType.AliEngineDataMsgCustom;
/* data dapat berupa jenis data apa pun (teks, citra, dll.) */
msg.data =  xxxx;
mAliRtcEngine.sendDataChannelMsg(msg);

iOS

AliRtcDataChannelMsg* msg = [[AliRtcDataChannelMsg alloc] init];
msg.type = AliRtcDataMsgCustom;
/* data dapat berupa jenis data apa pun (teks, citra, dll.) */
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 jenis data apa pun (teks, citra, dll.) dalam format ArrayBuffer
mAliRtcEngine.sendDataChannelMessage(
  new AliRtcDataChannelMsg(data), 
);

Windows

AliEngineDataChannelMsg msg;
msg.type = AliEngineDataChannelCustom;
/* data dapat berupa jenis data apa pun (teks, citra, dll.) */
msg.data =  data;
msg.dataLen = dataLength;
mAliRtcEngine->SendDataChannelMessage(msg);

Terima pesan kustom

Anda dapat menerima pesan kustom dengan mendengarkan callback onDataChannelMessage.

Android

// Dalam callback AliRtcEngineNotify
public void onDataChannelMessage(String uid, AliRtcEngine.AliRtcDataChannelMsg msg) {
    /* TODO: Tambahkan logika pemrosesan pesan kustom Anda di sini. */
}

iOS

- (void)onDataChannelMessage:(NSString *_Nonnull)uid controlMsg:(AliRtcDataChannelMsg*_Nonnull)controlMsg {
	/* TODO: Tambahkan logika pemrosesan pesan kustom Anda di sini. */
}

Harmony

// Callback untuk menerima pesan saluran data
listener.onDataChannelMessage((uid: string, msg: AliRtcDataChannelMsg) => {
  console.info(`Pesan saluran data diterima: uid=${uid}, type=${msg.type}`);
  /* TODO: Tambahkan logika pemrosesan pesan kustom Anda di sini. */
});

Web

mAliRtcEngine.on('dataChannelMsg', (uid, message) => {
  // Tambahkan logika pemrosesan pesan kustom Anda di sini.
  console.log('dataChannelMsg', uid, message);
});

Windows

public:
virtual void OnDataChannelMessage(const char* uid, const AliEngineDataChannelMsg& msg) override {
    /* TODO: Tambahkan logika pemrosesan pesan kustom Anda di sini. */
}