RTCIceCandidate - 表示候选 Internet 连接建立(ICE)配置
RTCIceCandidate
是 WebRTC API 的一部分,表示候选 Internet 连接建立(ICE)配置,该配置可用于建立 RTCPeerConnection
。
候选 ICE 描述了 WebRTC 能够与远程设备进行通信所需的协议和路由。在开始 WebRTC 对等连接时,通常在连接的每一端都建议多个候选对象,直到它们彼此同意描述它们认为最好的连接的候选对象为止。然后,WebRTC 使用该候选者的详细信息来发起连接。
有关 ICE 流程如何工作的详细信息,请参见 WebRTC 会话的生存期。文章 WebRTC 连接提供了其他有用的详细信息。
构造函数
RTCIceCandidate()
创建一个 RTCIceCandidate
对象来表示单个 ICE 候选对象,可以根据基于 RTCIceCandidateInit
字典的对象进行配置。
注意: 为了向后兼容,构造函数还接受包含
candidate
属性值而不是RTCIceCandidateInit
对象,因为candidate
包含RTCIceCandidateInit
包含的所有信息以及更多信息。
属性
candidate
只读
一个 DOMString
,代表可用于连接检查的候选对象的传输地址。该地址的格式为 RFC 5245 中定义的 candidate-attribute
。如果 RTCIceCandidate
是 “候选对象结束”指示符,则此字符串为空(""
)。
component
只读
一个 DOMString
,指示候选者是 RTP 还是 RTCP 候选者;它的值是 "rtp"
或 "rtcp"
,并且是从 candidate
字符串中的 "component-id"
字段中得出的。允许的值以 RTCIceComponent
枚举类型列出。
foundation
只读
返回一个包含唯一标识符的 DOMString,该标识符对于相同类型的任何候选者都相同,共享相同的基址(ICE 代理发送候选者的地址),并且来自同一台 STUN 服务器。这用于帮助优化 ICE 性能,同时对出现在多个 RTCIceTransport 对象上的候选进行优先级排序和相关。
ip
只读
一个 DOMString
,表示候选者 IP 地址。
port
只读
一个整数值,表示候选端口号。
priority
只读
一个长整数值,表示候选者的优先级。
protocol
只读
一个字符串,指示候选者的协议是 "tcp"
还是 "udp"
。该字符串是枚举类型 RTCIceProtocol
中的字符串之一。
relatedAddress
只读
如果候选对象是从另一个候选对象派生的,则 relatedAddress
是包含该主机候选对象的 IP 地址的 DOMString
。对于主持候选者,该值为 null
。
relatedPort
只读
对于从另一个候选对象(例如中继或自反候选对象)衍生的候选对象,relatedPort
是一个数字,表示从中派生该候选对象的候选对象的端口号。对于主持候选者,relatedPort
属性为 null
。
sdpMid
只读
一个 DOMString
,指定候选者的媒体流标识标签,用于唯一标识与候选者相关联的组件中的媒体流,如果不存在这样的关联,则为 null
。
sdpMLineIndex
只读
如果不是 null
,则 sdpMLineIndex
表示与候选者相关联的 SDP 中媒体描述(如 RFC 4566 中定义)的从零开始的索引号。
tcpType
只读
如果 protocol
是 "tcp"
,则 tcpType
代表 TCP 候选类型。否则,tcpType
为 null
。
type
只读
一个 DOMString
,指示候选类型,作为来自 RTCIceCandidateType
枚举类型中的字符串之一。
usernameFragment
只读
一个 DOMString
,包含一个随机生成的用户名片段(“ice-ufrag”),ICE 将该用户名片段用于消息完整性,以及一个随机生成的密码(“ice-pwd”)。您可以使用此字符串来验证 ICE 代的生成。即使 ICE 重新启动,同一 ICE 进程的每一代都将使用相同的 usernameFragment
。
方法
toJSON()
给定 RTCIceCandidate
的当前配置,toJSON()
返回一个 DOMString
,表示该配置的 JSON,形式为 RTCIceCandidateInit
对象。
实例
有关实例,请参阅文章信号和视频呼叫,该文章演示了整个过程。
规范
规范 | 状态 | 备注 |
---|---|---|
WebRTC 1.0: Real-time Communication Between Browsers RTCIceCandidate 的定义 |
候选推荐 | 初始定义。 |
桌面浏览器兼容性
特性 | Chrome | Edge | Firefox | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|---|
基础支持 | 支持 | 支持 | 22 | 不支持 | 支持 | 支持 |
RTCIceCandidate() 构造函数 | 支持 | 支持 | 221 | 不支持 | 支持 | 未知 |
address | 74 | 未知 | 未知 | 不支持 | 未知 | 未知 |
candidate | 23 | 15 | 22 | 不支持 | 15 | 支持 |
component | 74 | 未知 | 不支持 | 不支持 | 未知 | 未知 |
foundation | 74 | 支持 | 不支持 | 不支持 | 不支持 | 未知 |
ip | 不支持 | 支持 | 不支持 | 不支持 | 不支持 | 未知 |
port | 74 | 支持 | 不支持 | 不支持 | 不支持 | 未知 |
priority | 74 | 支持 | 不支持 | 不支持 | 不支持 | 未知 |
protocol | 74 | 支持 | 不支持 | 不支持 | 不支持 | 未知 |
relatedAddress | 74 | 支持 | 不支持 | 不支持 | 不支持 | 未知 |
relatedPort | 74 | 支持 | 不支持 | 不支持 | 不支持 | 未知 |
sdpMid | 23 | 15 | 22 | 不支持 | 15 | 支持 |
sdpMLineIndex | 23 | 15 | 22 | 不支持 | 15 | 支持 |
tcpType | 74 | 支持 | 不支持 | 不支持 | 不支持 | 未知 |
toJSON | 45 | 15 | 27 | 不支持 | 32 | 支持 |
type | 74 | 支持 | 不支持 | 不支持 | 不支持 | 未知 |
usernameFragment | 74 | 未知 | 67 | 不支持 | 未知 | 未知 |
移动浏览器兼容性
特性 | Android | Chrome for Android | Edge mobile | Firefox for Android | IE mobile | Opera Android | iOS Safari |
---|---|---|---|---|---|---|---|
基础支持 | 支持 | 支持 | 未知 | 支持 | 未知 | 支持 | 支持 |
RTCIceCandidate() 构造函数 | 支持 | 支持 | 未知 | 支持1 | 未知 | 支持 | 未知 |
address | 74 | 74 | 未知 | 未知 | 未知 | 未知 | 未知 |
candidate | 支持 | 25 | 未知 | 支持 | 未知 | 14 | 支持 |
component | 74 | 74 | 未知 | 不支持 | 未知 | 未知 | 未知 |
foundation | 74 | 74 | 未知 | 未知 | 未知 | 不支持 | 未知 |
ip | 不支持 | 不支持 | 未知 | 不支持 | 未知 | 不支持 | 未知 |
port | 74 | 74 | 未知 | 不支持 | 未知 | 不支持 | 未知 |
priority | 74 | 74 | 未知 | 不支持 | 未知 | 不支持 | 未知 |
protocol | 74 | 74 | 未知 | 不支持 | 未知 | 不支持 | 未知 |
relatedAddress | 74 | 74 | 未知 | 不支持 | 未知 | 不支持 | 未知 |
relatedPort | 74 | 74 | 未知 | 不支持 | 未知 | 不支持 | 未知 |
sdpMid | 支持 | 25 | 未知 | 支持 | 未知 | 14 | 支持 |
sdpMLineIndex | 支持 | 25 | 未知 | 支持 | 未知 | 14 | 支持 |
tcpType | 74 | 74 | 未知 | 不支持 | 未知 | 不支持 | 未知 |
toJSON | 45 | 45 | 未知 | 27 | 未知 | 32 | 支持 |
type | 74 | 74 | 未知 | 不支持 | 未知 | 不支持 | 未知 |
usernameFragment | 74 | 74 | 未知 | 67 | 未知 | 未知 | 未知 |
1. 在 Firefox 68 之前,构造函数的 options
参数是必填的。