RTCIceTransport: state 属性
RTCIceTransport 接口中只读的 state 属性返回 ICE transport 的当前状态,因此您可以确定 ICE gathering 进程所处的状态。
这与 gatheringState 不同,后者仅指示 ICE gathering 当前是否正在进行。它也与 RTCPeerConnection.connectionState 不同,后者聚合了整个连接上每个 RTCRtpSender 和每个 RTCRtpReceiver 所使用的所有 RTCIceTransport 的状态。
值
一个字符串,其值是以下之一:
"new"-
RTCIceTransport正在收集本地候选地址,或正在等待远程设备开始发送远程候选地址,或两者兼有。在此状态下,尚未开始检查候选地址以寻找可能可接受的地址。 "checking"-
已接收到至少一个远程候选地址,并且
RTCIceTransport已开始检查远程和本地候选地址的配对,以尝试识别可用于建立连接的可用配对。请记住,本地候选地址的收集可能仍在进行中,同样,远程设备也可能仍在收集自己的候选地址。 "connected"-
已找到并选择了一个可用的候选地址配对,并且
RTCIceTransport已使用该配对将两个对等方连接起来。但是,仍有候选地址配对需要考虑,并且两个设备中的一个或两个设备上仍可能进行收集。如果任一对等方决定取消使用选定候选地址配对的同意,transport 可能会从
"connected"状态恢复到"checking"状态,如果已无剩余候选地址可供检查但一个或两个客户端仍在收集候选地址,则可能恢复到"disconnected"状态。 "completed"-
Transport 已完成本地候选地址的收集,并收到了远程对等方发送的不再发送候选地址的通知。此外,已考虑所有候选地址配对并选择了一个用于使用的配对。如果所有成功的候选地址配对的同意检查都失败,transport 状态将更改为
"failed"。 "disconnected"-
ICE 代理已确定此
RTCIceTransport的连接已丢失。这不是失败状态(那是"failed")。"disconnected"值表示发生了暂时性问题,已中断连接,但该问题应能自动解决,而无需您的代码采取任何措施。有关更多详细信息,请参阅 The disconnected state。 "failed"-
RTCIceTransport已完成收集过程,收到了远程对等方发送的“不再发送候选地址”的通知,并已完成候选地址配对的检查,但未能成功找到一个既有效又可获得其使用同意的配对。这是一个终止状态,表示无法实现或维持连接。 "closed"-
Transport 已关闭,不再响应 STUN 请求。
用法说明
如果发生 ICE 重启,候选地址收集和连接性检查过程将重新开始;如果重启发生在 "completed" 状态下,这将导致从 "connected" 状态进行转换。如果重启发生在暂时性的 "disconnected" 状态期间,状态将转换为 "checking"。
The disconnected state
"disconnected" 是一个暂时性状态,当两个对等方之间的连接以 WebRTC 基础设施可以在连接再次可用时自动纠正的方式失败时发生。它不是失败状态。相反,您可以将 "disconnected" 视为类似于 "checking",但增加了连接曾工作但当前未工作的额外信息。
每个 用户代理 和平台可能都有其自身的触发 "disconnected" 状态的场景。可能的原因包括:
- 连接正在使用的网络接口已离线。
- 发送到远程设备的 STUN 请求反复未得到答复。
当 transport 已完成检查所有现有候选地址配对但未找到可用的配对,或找到可用配对但因拒绝使用该配对的同意而拒绝时,也可能出现 "disconnected" 状态。在此情况下,transport 仍将继续收集候选地址,和/或等待远程对等方发送候选地址。
规范
| 规范 |
|---|
| WebRTC:浏览器中的实时通信 # dom-icetransport-state |
浏览器兼容性
加载中…