RTCPeerConnection:signalingState 属性
signalingState
是 RTCPeerConnection
接口的只读属性,它返回一个字符串值,描述了在连接或重新连接到另一个对等方时,连接本地端信令过程的状态。请参阅我们 WebRTC 会话生命周期页面中的 信令。
由于信令过程是一个状态机,因此能够在消息到达时验证您的代码是否处于预期状态可以帮助避免意外且可避免的故障。例如,如果您在 signalingState
不是 "have-local-offer"
时收到答复,则表明存在问题,因为您应该只在创建要约但尚未收到答复并将其传递到 RTCPeerConnection.setLocalDescription()
之前收到答复。如果您监视此类不匹配的状态并以优雅的方式处理它们,则您的代码将更可靠。
例如,此值在调试期间也可能很有用。
此外,当此属性的值更改时,会向 RTCPeerConnection
实例发送 signalingstatechange
事件。
值
允许的字符串值为
stable
-
没有正在进行的要约和答复交换。这可能意味着
RTCPeerConnection
对象是新的,在这种情况下,localDescription
和remoteDescription
均为null
;它也可能意味着协商已完成并且已建立连接。 have-local-offer
-
本地对等方已调用
RTCPeerConnection.setLocalDescription()
,传入表示要约的 SDP(通常通过调用RTCPeerConnection.createOffer()
创建),并且要约已成功应用。 have-remote-offer
-
远程对等方已创建要约并使用信令服务器将其传递给本地对等方,本地对等方已通过调用
RTCPeerConnection.setRemoteDescription()
将要约设置为远程描述。 have-local-pranswer
-
远程对等方发送的要约已应用,并且已创建答复(通常通过调用
RTCPeerConnection.createAnswer()
创建)并通过调用RTCPeerConnection.setLocalDescription()
应用。此临时答复描述了支持的媒体格式等,但可能不包含完整的 ICE 候选者集。其他候选者稍后将单独传递。 have-remote-pranswer
-
已收到临时答复并已成功应用,以响应先前发送并通过调用
setLocalDescription()
建立的要约。 closed
-
RTCPeerConnection
已关闭。
示例
const pc = new RTCPeerConnection(configuration);
const state = pc.signalingState;
规范
规范 |
---|
WebRTC:浏览器中的实时通信 # dom-peerconnection-signaling-state |
浏览器兼容性
BCD 表仅在启用 JavaScript 的浏览器中加载。