RTCPeerConnection Durum Makinesi

WebRTC birbirine bağlı birden fazla durum makinesi kullanır. Bu geçişleri anlamak, bağlantı sorunlarını ayıklamanın anahtarıdır.

Signaling State

RTCPeerConnection.signalingState

stable
setLocal(offer)
setRemote(offer)
have-local-offer
have-remote-offer
setRemote(answer)
setLocal(answer)
stable

Müzakere tamamlandığında signalingState tekrar stable'a döner. pranswer varyantları (provisional answer) bu basitleştirilmiş diyagramda gösterilmemiştir.

ICE Connection State

RTCPeerConnection.iceConnectionState

new
checking
connected
completed
disconnected
failed

completed, başarılı ICE doğrulamasının ardından gelir. disconnected geçici bir kopukluğu, failed ise kalıcı bir hatayı belirtir.

Connection State

RTCPeerConnection.connectionState

new
connecting
connected
disconnected
failed
closed

connectionState, ICE ve DTLS durumlarının birleşik halidir:

  • connecting — ICE veya DTLS henüz tamamlanmadı.
  • connected — Tüm transport katmanları aktif.
  • disconnected — Geçici kopukluk; ICE restart denenebilir.
  • failed — Kalıcı hata, bağlantı kurulamadı.

ICE Gathering State

RTCPeerConnection.iceGatheringState

new
Başlamadı
setLocal()
gathering
Candidate toplanıyor
null candidate
complete
Tamamlandı

setLocalDescription() çağrısı ile gathering başlar; tüm candidate'ler toplandığında onicecandidate son olarak null ile tetiklenir.