Home

signalingState

SignalingState is a property of the WebRTC RTCPeerConnection interface that describes the current state of the signaling process used to negotiate a session description protocol (SDP) exchange between peers. It reflects where in the offer/answer negotiation the connection currently stands and changes in response to creating offers and answers, applying remote descriptions, or closing the connection. The typical values are stable, have-local-offer, have-remote-offer, have-local-pranswer, have-remote-pranswer, and closed.

Each value signals a specific phase of negotiation: stable indicates no ongoing offer/answer exchange. have-local-offer means

SignalingState is a read-only property that updates automatically as the signaling flow progresses. It is influenced

the
local
party
has
created
an
offer
and
is
awaiting
a
remote
description.
have-remote-offer
indicates
a
remote
party
has
sent
an
offer
and
the
local
party
should
respond
with
an
answer.
have-local-pranswer
and
have-remote-pranswer
denote
provisional
answers
(pranswer)
have
been
created
or
received
as
part
of
certain
negotiation
patterns.
closed
signifies
that
the
RTCPeerConnection
has
been
closed
and
signaling
is
finished.
by
operations
such
as
createOffer,
createAnswer,
setLocalDescription,
setRemoteDescription,
and
close.
It
does
not
reflect
ICE
connectivity
status
or
actual
media
transmission;
rather,
it
tracks
the
negotiation
lifecycle.
Developers
commonly
listen
for
the
onsignalingstatechange
event
to
adapt
UI
and
logic
to
the
current
negotiation
phase,
ensuring
that
offers
and
answers
are
created
and
applied
in
the
correct
order.
In
typical
usage,
transitions
move
from
stable
to
have-local-offer
or
have-remote-offer
during
negotiation
and
return
to
stable
after
successful
description
exchanges,
with
pranswer
states
used
for
certain
intermediate
patterns.