RTCRtpTransceiver: direction 属性

Baseline 广泛可用 *

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

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

RTCRtpTransceiver 接口的 direction 属性是一个字符串,用于指示收发器的首选方向性。

方向性表明收发器是否会尝试发送和/或接收 RTP 数据,或者它是否处于非活动或已停止(终止)状态。设置收发器的方向时,该值不会立即生效。当前方向由 currentDirection 属性指示。

一个字符串,其值可能为以下之一:

"sendrecv"

收发器尝试发送和接收 RTP 数据

  • RTCRtpSender:尝试发送 RTP 数据,如果远程对等方接受连接并且发送方的至少一个编码器处于活动状态,则会这样做。
  • RTCRtpReceiver:尝试接收 RTP 数据,如果远程对等方接受,则会这样做。
"sendonly"

收发器尝试发送但不接收 RTP 数据

  • RTCRtpSender:尝试发送 RTP 数据,如果远程对等方接受连接并且发送方的至少一个编码器处于活动状态,则会这样做。
  • RTCRtpReceiver尝试接收 RTP 数据,也不会这样做。
"recvonly"

收发器尝试接收但不发送 RTP 数据

  • RTCRtpSender尝试发送 RTP 数据,也不会这样做。
  • RTCRtpReceiver:尝试接收 RTP 数据,如果远程对等方也尝试接收,则会这样做。
"inactive"

收发器处于非活动状态

  • RTCRtpSender尝试发送 RTP 数据,也不会这样做。
  • RTCRtpReceiver尝试接收 RTP 数据,也不会这样做。
"stopped"

这是收发器的最终状态。收发器已停止,将不会发送或接收 RTP 数据,也不会尝试这样做。当收发器尚未停止时设置此值会引发 TypeError

  • RTCRtpSender尝试发送 RTP 数据,也不会这样做。
  • RTCRtpReceiver尝试接收 RTP 数据,也不会这样做。

异常

设置 direction 的值时,可能会发生以下异常

InvalidStateError DOMException

接收方的 RTCPeerConnection 已关闭,或者 RTCRtpReceiver 已停止。

TypeError

当当前值为 stopped 以外的任何值时,将其设置为 stopped

描述

direction 属性可用于设置或获取收发器的首选方向性。

更新方向性不会立即生效。如果 direction 的新值与现有值不同,则需要重新协商连接,因此会向 RTCPeerConnection 发送一个 negotiationneeded 事件。然后,RTCRtpSender.createOffer()RTCPeerConnection.createAnswer() 将使用 direction 值(stopped 除外)来生成这些方法创建的 SDP 消息。例如,如果 direction 指定为 "sendrecv",则相应的 SDP a-line 将指示方向性:

a=sendrecv

一旦协商过程完成且新的会话描述已成功应用,新的方向性就会生效。

收发器的当前方向由 currentDirection 属性指示。

规范

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

浏览器兼容性

另见