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
Memiliki Akun Alibaba Cloud yang valid dan membuat aplikasi ApsaraVideo Real-time Communication. Untuk informasi selengkapnya, lihat Buat aplikasi. Dapatkan App ID dan App Key dari Konsol Manajemen Aplikasi.
Integrasikan SDK ARTC ke dalam proyek Anda dan implementasikan fitur audio dan video real-time dasar. Untuk mengintegrasikan SDK, lihat Unduh dan integrasikan SDK. Untuk mengimplementasikan fitur audio dan video, lihat Implementasikan panggilan audio dan video.
Implementasi

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.
Pengguna dengan role streamer dapat mengirim dan menerima pesan. Pengguna dengan role viewer hanya dapat menerima pesan.
Panggil
setParameteruntuk 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. */
}