全部产品
Search
文档中心

ApsaraVideo Live:Kirim dan terima pesan kustom

更新时间:Dec 19, 2025

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

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

Aktifkan saluran pesan kustom

Saluran pesan kustom dinonaktifkan secara default di ARTC. Untuk mengaktifkannya, Anda dapat memanggil metode setParameter. Metode ini dapat dipanggil 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];

Web

// Di web, Anda harus memanggil metode 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 saluran data dibentuk, Anda dapat memanggil metode sendDataChannelMsg.

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

  • Anda harus memanggil 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 data apa pun, seperti teks atau citra. */
msg.data =  xxxx;
mAliRtcEngine.sendDataChannelMsg(msg);

iOS

AliRtcDataChannelMsg* msg = [[AliRtcDataChannelMsg alloc] init];
msg.type = AliRtcDataMsgCustom;
/* data dapat berupa data apa pun, seperti teks atau citra. */
msg.data = xxxxx;
[self.engine sendDataChannelMessage:msg];

Web

const data = new TextEncoder().encode('xxxx');
// data dapat berupa data apa pun, seperti teks atau citra. Formatnya adalah ArrayBuffer.
mAliRtcEngine.sendDataChannelMessage(
  new AliRtcDataChannelMsg(data), 
);

Windows

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

Terima pesan kustom

Anda dapat mendengarkan callback onDataChannelMessage untuk menerima pesan kustom.

Android

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

iOS

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

Web

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

Windows

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