RTCPeerConnection:signalingState 属性

signalingStateRTCPeerConnection 接口的只读属性,它返回一个字符串值,描述了在连接或重新连接到另一个对等方时,连接本地端信令过程的状态。请参阅我们 WebRTC 会话生命周期页面中的 信令

由于信令过程是一个状态机,因此能够在消息到达时验证您的代码是否处于预期状态可以帮助避免意外且可避免的故障。例如,如果您在 signalingState 不是 "have-local-offer" 时收到答复,则表明存在问题,因为您应该只在创建要约但尚未收到答复并将其传递到 RTCPeerConnection.setLocalDescription() 之前收到答复。如果您监视此类不匹配的状态并以优雅的方式处理它们,则您的代码将更可靠。

例如,此值在调试期间也可能很有用。

此外,当此属性的值更改时,会向 RTCPeerConnection 实例发送 signalingstatechange 事件。

允许的字符串值为

stable

没有正在进行的要约和答复交换。这可能意味着 RTCPeerConnection 对象是新的,在这种情况下,localDescriptionremoteDescription 均为 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 已关闭。

示例

js
const pc = new RTCPeerConnection(configuration);
const state = pc.signalingState;

规范

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

浏览器兼容性

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

另请参阅