Right now, I have it set up so that the initiator for the connection does a peerConnection.restartIce(); if the peerConnection.iceConnectionState is failed or disconnected when peerConnection.oniceconnectionstatechange is triggered. This triggers a peerConnection.onnegotiationneeded event where I handle sending a new offer as the start of renegotiation which is then followed up by the initial negotiation steps.

The problem is that after all of this, the remote streams for both peers are frozen where they were when the webRTC failure happened. Does anyone know how to handle this so that the remote streams continue playing after recovery? If possible, I would like to do this without setting up new peer connections as it would be simpler.