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
Anda memiliki Akun Alibaba Cloud yang valid dan telah membuat aplikasi ApsaraVideo Real-time Communication. Untuk informasi selengkapnya, lihat Buat aplikasi. Dapatkan App ID dan App Key di Konsol ApsaraVideo Real-time Communication.
Anda telah mengintegrasikan ARTC SDK ke dalam proyek Anda dan menerapkan fitur audio dan video real-time dasar. Untuk informasi tentang integrasi SDK, lihat Unduh dan integrasikan SDK. Untuk informasi tentang penerapan panggilan audio dan video, lihat Terapkan panggilan audio dan video.
Implementasi

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.
Streamer dapat mengirim dan menerima pesan. Viewer hanya dapat menerima pesan.
Anda harus memanggil
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 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. */
}