ionorg / ion-sfu

Pure Go WebRTC SFU
MIT License
975 stars 240 forks source link

Looking for a solution to create Subscriber offer with iceRestart option #676

Open calvin-seo opened 1 year ago

calvin-seo commented 1 year ago

I want achieve reconnection without create new RTCPeerConnection for both publisher and subscriber at both client and server-side, when. client's IP gets changed during reconnection

I could successfully achieved the reconnection for publisher RTCPeerConnection by sending new offer created with iceRestart set true during reconnection. However, it seems ion-sfu does not provide way to create a new offer with iceRestart option for Subscriber, so the server-side subscriber ICE agent keeps sending heartbeat to the old client IP.

I could only manually call *Subscriber.Negotiate() method, and get a new Subscriber offer without the option as stated below, https://github.com/pion/ion-sfu/blob/daf197ada794c66ab01b7fe4e32718cbc4dba005/pkg/sfu/subscriber.go#L237-L240

However, no icecandidate event gets fired from both client and server-side after the server and client share the Subscriber offer and answer.