WebRTC - RTCDataChannel API


WebRTC 不仅擅长传输音频和视频流,还擅长传输我们可能拥有的任何任意数据。这就是 RTCDataChannel 对象发挥作用的地方。

RTC数据通道API

特性

  • RTCDataChannel.label(只读) - 返回包含数据通道名称的字符串。

  • RTCDataChannel.ordered(只读) - 如果消息的传递顺序得到保证,则返回 true;如果不能保证,则返回 false。

  • RTCDataChannel.protocol(只读) - 返回包含用于该通道的子协议名称的字符串。

  • RTCDataChannel.id(只读) - 返回在创建 RTCDataChannel 对象时设置的通道的唯一 ID。

  • RTCDataChannel.readyState(只读) - 返回表示连接状态的 RTCDataChannelState 枚举。可能的值 -

    • 连接- 表示连接尚未激活。这是初始状态。

    • open - 表示连接正在运行。

    • 关闭- 表示连接正在关闭过程中。缓存的消息正在发送或接收,但没有新创建的任务正在接受。

    • close - 表示连接无法建立或已关闭。

  • RTCDataChannel.bufferedAmount(只读) - 返回已排队等待发送的字节数。这是尚未通过 RTCDataChannel.send() 发送的数据量。

  • RTCDataChannel.bufferedAmountLowThreshold - 返回 RTCDataChannel.bufferedAmount 占用较低的字节数。当 RTCDataChannel.bufferedAmount 减少到低于此阈值时,将触发 bufferedamountlow 事件。

  • RTCDataChannel.binaryType - 返回连接传输的二进制数据的类型。可以是“blob”或“arraybuffer”。

  • RTCDataChannel.maxPacketLifeType(只读) - 返回一个无符号短整型,指示消息传递处于不可靠模式时的窗口长度(以毫秒为单位)。

  • RTCDataChannel.maxRetransmits(只读) - 返回一个无符号短整型值,指示通道在未传送数据时将重传数据的最大次数。

  • RTCDataChannel.negotiated(只读) - 返回一个布尔值,指示通道是否已由用户代理或应用程序协商。

  • RTCDataChannel.reliable(只读) - 返回一个布尔值,指示连接可以以不可靠模式发送消息。

  • RTCDataChannel.stream(只读) - RTCDataChannel.id 的同义词

事件处理程序

  • RTCDataChannel.onopen - 触发 open 事件时调用此事件处理程序。建立数据连接时发送此事件。

  • RTCDataChannel.onmessage - 当消息事件被触发时调用此事件处理程序。当数据通道上有消息可用时发送该事件。

  • RTCDataChannel.onbufferedamountlow - 当 bufferedamoutlow 事件被触发时,调用此事件处理程序。当 RTCDataChannel.bufferedAmount 减小到 RTCDataChannel.bufferedAmountLowThreshold 属性以下时,发送此事件。

  • RTCDataChannel.onclose - 触发关闭事件时调用此事件处理程序。当数据连接关闭时发送此事件。

  • RTCDataChannel.onerror - 触发错误事件时调用此事件处理程序。当遇到错误时发送此事件。

方法

  • RTCDataChannel.close() - 关闭数据通道。

  • RTCDataChannel.send() - 通过通道发送参数中的数据。数据可以是 blob、字符串、ArrayBuffer 或 ArrayBufferView。