I see a lot of questions on the mailing list, in my course, and during the meetups about the different states and flow of a peer connection. I thought I should share a slide that shows an overview of what you should expect, as it proved helpful for some as a reference.
- italic bold blue items are not mandatory, and should regarded as work arounds. However their use is so widespread that I thought I should place them in the right place in the flow, so people know when to modify the sdp, filter the candidates and so on.
- How to set up the signaling and the GUM part are left out. There are way too many variants.
- Not all the ICE states are currently implemented in the browsers (failed and completed are missing).
- This drawing is for trickle ICE.
- This drawing is for one peer connection only, multiparty, and topologies of connection are left out. For each connection in your app, you have all those states and items repeated.
Any feedback is welcome.