w3c / webrtc-ice

Extension to the RTCIceTransport interface defined in WebRTC 1.0
https://w3c.github.io/webrtc-ice/
Other
9 stars 14 forks source link

Support for ICE Forking #34

Open aboba opened 4 years ago

aboba commented 4 years ago

ICE forking is supported in the ORTC API, but is not yet in the WebRTC-ICE specification. We talked about potential ICE forking designs at TPAC 2019, and now ICE forking has been implemented. Should we add this to the specification?

vmx commented 1 year ago

Are there any news? I've found several discussions on that topic that seem to have stopped around 2020.

I'm interested in the use case of being able to connect several peers in a pure in browser environment, where all peers are within the same network. They would share their connection information (fingerprint, ICE candidates) via e.g. a QR code. As I understand it, the ICE forking would help as the one creating the offer, cannot know which peer would connect to it. So it would create an offer, with the same ICE candidates, for each peer that might want to connect.

aboba commented 1 year ago

@vmx At the February 21, 2023 virtual interim, we had a presentation on a proposed ICE Controller API:

The GitHub repo for the proposal is here.

vmx commented 1 year ago

Thanks a lot for the link! After reading the ICE Constroller API proposal, do I understand it correctly that in order to get a forking like behaviour you would do:

  1. Create a connection with its local ICE candidates.
  2. Extract the local candidate pairs via the getSelectedCandidatePair() call.
  3. Create a second connection and call switchToCandidatePair() with the extracted candidates from the first connection.
  4. Now the second connection has the same local candidates as the first one.