RTCPeerConnection: iceConnectionState 属性

Baseline 已广泛支持

此功能已成熟,可跨多种设备和浏览器版本使用。自 2017 年 9 月以来,它已在浏览器中提供。

RTCPeerConnection 接口的只读属性 iceConnectionState 返回一个字符串,表示与 RTCPeerConnection 相关联的 ICE 代理的状态:newcheckingconnectedcompletedfaileddisconnectedclosed

它描述了 ICE 代理及其与 ICE 服务器(即 STUNTURN 服务器)连接的当前状态。

您可以通过监听 iceconnectionstatechange 事件来检测此值何时发生变化。

ICE 代理及其连接的当前状态。该值是以下字符串之一:

new

ICE 代理正在收集地址,或正在等待通过调用 RTCPeerConnection.addIceCandidate()(或两者)来获取远程候选者。

checking

ICE 代理已获得一个或多个远程候选者,并正在将本地和远程候选者对进行比较以尝试找到兼容的匹配项,但尚未找到允许建立对等连接的对。候选者收集工作也可能仍在进行中。

connected

已为连接的所有组件找到可用的本地和远程候选者对,并且连接已建立。收集工作可能仍在进行中,ICE 代理也可能仍在相互比较候选者,以寻找更好的连接。

completed

ICE 代理已完成候选者收集,已相互比较所有对,并为所有组件找到了连接。

failed

ICE 候选者已相互比较所有候选者对,但未能为连接的所有组件找到兼容的匹配项。然而,ICE 代理可能已经为某些组件找到了兼容的连接。

disconnected

对于 RTCPeerConnection 的至少一个组件,检查以确保组件仍然连接失败。这比 failed 的测试更宽松,并且可能在不可靠的网络或临时断开连接时间歇性触发并自发解决。当问题解决时,连接可能会恢复到 connected 状态。

closed

RTCPeerConnection 的 ICE 代理已关闭,不再处理请求。

示例

js
const pc = new RTCPeerConnection();
const state = pc.iceConnectionState;

规范

规范
WebRTC:浏览器中的实时通信
# dom-peerconnection-ice-connection-state

浏览器兼容性

另见