RTCDataChannel: binaryType 属性

Baseline 广泛可用 *

此特性已相当成熟,可在许多设备和浏览器版本上使用。自 ⁨2020 年 1 月⁩ 起,所有主流浏览器均已支持。

* 此特性的某些部分可能存在不同级别的支持。

RTCDataChannel 接口上的 binaryType 属性是一个字符串,它指定了用于表示在 RTCDataChannel 上接收到的二进制数据的对象类型。WebSocket.binaryType 属性允许的值在这里也同样适用:如果正在使用 Blob 对象,则为 blob;如果正在使用 ArrayBuffer 对象,则为 arraybuffer。默认值为 arraybuffer

当在数据通道上收到二进制消息时,生成的 message 事件的 MessageEvent.data 属性是一个由 binaryType 指定类型的对象。

一个可以具有以下值的字符串

"blob"

收到的二进制消息的内容将包含在 Blob 对象中。

"arraybuffer"

收到的二进制消息的内容将包含在 ArrayBuffer 对象中。

示例

此代码配置了一个数据通道以在 ArrayBuffer 对象中接收二进制数据,并为 message 事件建立监听器,该监听器将收到的数据表示为十六进制字节值列表的字符串。

js
const dc = peerConnection.createDataChannel("Binary");
dc.binaryType = "arraybuffer";

dc.onmessage = (event) => {
  const byteArray = new Uint8Array(event.data);
  let hexString = "";

  byteArray.forEach((byte) => {
    hexString += `${byte.toString(16)} `;
  });
};

规范

规范
WebRTC:浏览器中的实时通信
# dom-datachannel-binarytype

浏览器兼容性

另见