只读
signalingState
property on the
RTCPeerConnection
interface returns one of the string values specified by the
RTCSignalingState
enum; these values describe the state of the signaling process on the local end of the connection while connecting or reconnecting to another peer. See
Signaling
in
Lifetime of a WebRTC session
for more details about the signaling process.
Because the signaling process is a state machine, being able to verify that your code is in the expected state when messages arrive can help avoid unexpected and avoidable failures. For example, if you receive an answer while the
signalingState
isn't
"have-local-offer"
, you know that something is wrong, since you should only receive answers after creating an offer but before an answer has been received and passed into
RTCPeerConnection.setLocalDescription()
. Your code will be more reliable if you watch for mismatched states like this and handle them gracefully.
This value may also be useful during debugging, for example.
In addition, when the value of this property changes, a
signalingstatechange
event is sent to the
RTCPeerConnection
实例。
var state = RTCPeerConnection.signalingState;
The allowed values are those included in the enum
RTCSignalingState
.
RTCSignalingState
enum specifies the possible values of
RTCPeerConnection.signalingState
, which indicates where in the process of signaling the exchange of offer and answer the connection currently is.
| 常量 | 描述 |
|---|---|
"stable"
|
There is no ongoing exchange of offer and answer underway. This may mean that the
RTCPeerConnection
object is new, in which case both the
localDescription
and
remoteDescription
are
null
; it may also mean that negotiation is complete and a connection has been established.
|
"have-local-offer"
|
The local peer has called
RTCPeerConnection.setLocalDescription()
, passing in SDP representing an offer (usually created by calling
RTCPeerConnection.createOffer()
), and the offer has been applied successfully.
|
"have-remote-offer"
|
The remote peer has created an offer and used the signaling server to deliver it to the local peer, which has set the offer as the remote description by calling
RTCPeerConnection.setRemoteDescription()
.
|
"have-local-pranswer"
|
The offer sent by the remote peer has been applied and an answer has been created (usually by calling
RTCPeerConnection.createAnswer()
) and applied by calling
RTCPeerConnection.setLocalDescription()
. This provisional answer describes the supported media formats and so forth, but may not have a complete set of ICE candidates included. Further candidates will be delivered separately later.
|
"have-remote-pranswer"
|
A provisional answer has been received and successfully applied in response to an offer previously sent and established by calling
setLocalDescription()
.
|
"closed"
|
The connection is closed.
注意:
This value moved into the
|
var pc = new RTCPeerConnection(configuration); var state = pc.signalingState;
| 规范 | 状态 | 注释 |
|---|---|---|
|
WebRTC 1.0: Real-time Communication Between Browsers
The definition of 'RTCPeerConnection.signalingState' in that specification. |
候选推荐 | 最初的规范。 |
| 桌面 | 移动 | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
signalingState
|
Chrome 26 | Edge 15 | Firefox 22 | IE No |
Opera
43
|
Safari 11 | WebView Android Yes | Chrome Android 26 | Firefox Android 44 |
Opera Android
43
|
Safari iOS Yes | Samsung Internet Android 6.0 |
完整支持
不支持
见实现注意事项。