WebRTC 一次成功通话背后至少有四套状态机并行:Signaling 状态、ICE 连接状态、ICE 收集状态、DTLS 传输状态,以及 PeerConnection 自身在 w3c/webrtc 规范下定义的综合connectionState。理解这些状态机的"驱动事件 + 转换条件",是排查"卡在 connected、ICE 不收敛、DTLS 失败"等问题的关键。1. 几套状态机分别管什么WebRTC 的连接状态之所以容易让人困惑,是因为它不是一条直线,而是几套状态机叠在一起。SignalingState管 SDP Offer/Answer 是否处在稳定状态;IceGatheringState管本地 candidate 是否收集完成;IceConnectionState管候选地址对是否能连通;DTLS 状态管安全握手和 SRTP 密钥是否就绪;PeerConnectionState则把 ICE 和 DTLS 等底层传输状态聚合成业务更容易理解的综合状态。可以把它们理解成一次通话的五个检查点:Signaling:双方合同有没有签完,Offer/Answer 是否匹配。ICE Gathering:本端能用的地址有没有找齐。ICE Connection:网络路径能不能打通。DTLS:打通后能不能完成安全握手。PeerConnection:综合判断这条连接对业务是否可用。
WebRTC连接状态全解析:Signaling、ICE、DTLS、PeerConnection状态机
WebRTC 一次成功通话背后至少有四套状态机并行:Signaling 状态、ICE 连接状态、ICE 收集状态、DTLS 传输状态,以及 PeerConnection 自身在 w3c/webrtc 规范下定义的综合connectionState。理解这些状态机的"驱动事件 + 转换条件",是排查"卡在 connected、ICE 不收敛、DTLS 失败"等问题的关键。1. 几套状态机分别管什么WebRTC 的连接状态之所以容易让人困惑,是因为它不是一条直线,而是几套状态机叠在一起。SignalingState管 SDP Offer/Answer 是否处在稳定状态;IceGatheringState管本地 candidate 是否收集完成;IceConnectionState管候选地址对是否能连通;DTLS 状态管安全握手和 SRTP 密钥是否就绪;PeerConnectionState则把 ICE 和 DTLS 等底层传输状态聚合成业务更容易理解的综合状态。可以把它们理解成一次通话的五个检查点:Signaling:双方合同有没有签完,Offer/Answer 是否匹配。ICE Gathering:本端能用的地址有没有找齐。ICE Connection:网络路径能不能打通。DTLS:打通后能不能完成安全握手。PeerConnection:综合判断这条连接对业务是否可用。