Skip to content

数据通道

数据通道相关的 API,用于在用户之间传输自定义数据。

sendDataChannelMessage

通过数据通道发送消息。

方法签名

typescript
sendDataChannelMessage(dataChannelMsg: AliRtcDataChannelMsg): void

参数说明

参数类型描述
dataChannelMsgAliRtcDataChannelMsg数据通道消息对象

消息对象说明

typescript
interface AliRtcDataChannelMsg {
  // 消息类型
  type: AliRtcDataMsgType;
  // 消息内容(字符串或 ArrayBuffer)
  data: string | ArrayBuffer;
}

enum AliRtcDataMsgType {
  // 文本消息
  Text = 0,
  // 二进制消息
  Binary = 1,
}

说明

  • 需要在成功加入频道后调用
  • 消息会发送给频道内所有订阅了数据通道的用户
  • 单条消息最大支持 64KB

使用示例

javascript
// 发送文本消息
engine.sendDataChannelMessage({
  type: AliRtcEngine.AliRtcDataMsgType.Text,
  data: 'Hello, everyone!',
});

// 发送二进制消息
const binaryData = new ArrayBuffer(100);
engine.sendDataChannelMessage({
  type: AliRtcEngine.AliRtcDataMsgType.Binary,
  data: binaryData,
});

sendMediaExtensionMsg

发送媒体扩展消息。

方法签名

typescript
sendMediaExtensionMsg(data: ArrayBuffer, repeatCount?: number): Promise<void>

参数说明

参数类型描述
dataArrayBuffer消息内容(二进制数据)
repeatCountnumber(可选) 重复发送次数,默认 1 次

说明

  • 通过 RTP 扩展头发送数据
  • 消息会随媒体流一起传输
  • 单条消息最大 16 字节
  • 适合发送时间敏感的小数据

使用示例

javascript
// 创建要发送的数据
const data = new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8]);

// 发送媒体扩展消息
await engine.sendMediaExtensionMsg(data.buffer);

// 发送并重复 3 次
await engine.sendMediaExtensionMsg(data.buffer, 3);

相关事件

  • dataChannelMsg - 接收数据通道消息事件,详见数据通道事件
  • remoteUserSubscribedDataChannel - 远端用户订阅数据通道事件
  • mediaExtensionMsgReceived - 接收媒体扩展消息事件,详见媒体事件