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 参数是必填的。