RTCIceTransport:state 属性

stateRTCIceTransport 接口的只读属性,它返回 ICE 传输的当前状态,因此您可以确定 ICE 代理当前正在运行的 ICE 收集状态。

这与 gatheringState 不同,后者仅指示 ICE 收集当前是否正在进行。它也与 RTCPeerConnection.connectionState 不同,后者聚合了整个连接中每个 RTCIceTransport、每个 RTCRtpSender 和每个 RTCRtpReceiver 的状态。

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

"new"

RTCIceTransport 当前正在收集本地候选者,或者正在等待远程设备开始传输远程候选者,或者两者兼而有之。在此状态下,尚未开始检查候选者以查找可能可接受的候选者。

"checking"

已收到至少一个远程候选者,并且 RTCIceTransport 已开始检查远程和本地候选者的配对,以尝试识别可用于建立连接的可行配对。请记住,本地候选者的收集可能仍在进行中,并且类似地,远程设备也可能仍在收集自己的候选者。

"connected"

已找到并选择了一个可行的候选者配对,并且 RTCIceTransport 已使用该配对将两个对等节点连接在一起。但是,仍然有候选者配对需要考虑,并且两个设备之一或两者上可能仍然存在收集正在进行。

如果任一端决定取消同意使用所选候选者配对,则传输可能会从 "connected" 状态恢复到 "checking" 状态,如果没有任何候选者剩余可检查但一个或两个客户端仍在收集候选者,则可能会恢复到 "disconnected" 状态。

"completed"

传输已完成本地候选者的收集,并且已收到来自远程对等节点的通知,表示不会再发送任何候选者。此外,所有候选者配对都已考虑过,并且已选择一个配对用于使用。如果所有成功的候选者配对的同意检查都失败,则传输状态将更改为 "failed"

"disconnected"

ICE 代理已确定此 RTCIceTransport 的连接已断开。这不是失败状态(那是 "failed")。值为 "disconnected" 表示发生了瞬态问题导致连接断开,但应该会自动解决,而无需您的代码执行任何操作。有关更多详细信息,请参见 断开连接状态

"failed"

RTCIceTransport 已完成收集过程,已收到来自远程对等节点的“不再有候选者”通知,并且已完成候选者配对的检查,但没有成功找到既有效又可以获得同意的配对。这是一个最终状态,表示无法实现或维持连接。

"closed"

传输已关闭,不再响应 STUN 请求。

使用说明

如果发生 ICE 重启,则候选者收集和连接检查过程将重新开始;如果重启发生在状态为 "completed" 时,这将导致从 "connected" 状态转换。如果重启发生在瞬态 "disconnected" 状态期间,则状态将转换到 "checking"

断开连接状态

"disconnected" 是一个瞬态状态,当两个对等节点之间的连接以 WebRTC 基础设施可以在连接再次可用时自动更正的方式失败时发生。它不是失败状态。相反,您可以将 "disconnected" 视为类似于 "checking",但增加了连接之前有效但目前无效的信息。

每个 用户代理 和平台可能都有自己的可能触发 "disconnected" 状态的场景。可能的原因包括

  • 连接使用的网络接口已脱机。
  • 发送到远程设备的 STUN 请求多次未得到响应。

当传输完成检查所有现有候选者配对并且未找到可行的配对时,也可能发生 "disconnected" 状态,或者找到有效配对但由于拒绝同意使用该配对而被拒绝。在此场景中,传输仍在继续收集候选者,和/或等待远程对等节点发送候选者。

规范

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

浏览器兼容性

BCD 表格仅在启用了 JavaScript 的浏览器中加载。