1
votes

Scenario -

  • A wants to stream his webcam to B
  • B just wants to view, and won't share anything
  • Basically one way stream from A => B

A create's offer and sends it over

At B's side

Get an offer from "A"

[Offer removed]

Set it as Remote Description

Signal State changes to SignalingStateHaveRemoteOffer

OnAddStream is called

label: PiB7Ij4lDsH9D8SxYIOyYBQcnd0tWWnTALtO, video: [a83c8794-aec4-4077-b06b-d218c8e18e74] is called

B Create's Answer (No constraints for now)

On Success is called

This is the anwer (as no streams exist it's recvonly)

[Edit:Answer removed]

Set this Answer as local sdp

Signal State changes to SignalingStateStable

ICE Connection becomes ICEConnectionStateChecking

setLocalDescriptionOnSuccess is called

Gathering state becomes ICEGatheringStateGathering

Bunch of onIceCandidate events

ICEGatheringStateComplete

ICE fails now.

ICEConnectionState => ICEConnectionStateFailed

I've not even started adding trickled ICE Candidates from A yet.

Why does this happen?

1
Does the ICEConnectionState change to failed for A or B?Philipp Hancke
No at A's side it remains in checking state after I add back remote description. And at B's side, the state doesn't change after adding A's trickled ICE candidatesMakubex

1 Answers

0
votes

Figured it out. Even in one-way streaming, both sides need to exchange ICE.

I thought if only A is streaming, it's enough to send ICE's candidates over. But ICE connection will fail if B doesn't send over ice candidates back to A.