Open adonahue opened 5 years ago
Notes from conversation with @jordanreedie:
WebRTC already has an auto-reconnect mechanism that will try to reestablish a connection for up to 10 seconds. If it takes longer than that, and can't what are we gonig to do that would be a good user experience? 10 seconds is a long time, and users may rejoin on their own.
We don't know how often ICE connection failures happen, and what the UX is when we do - does a peer freeze, more than one, are they dropped from the call entirely? In the absence of that information, what is the priority if fixing a problem we don't know the impact of?
If we don't know the UX, what should we design for the user? Should we message them? Can we do anything better than the 10 second retry that's already happening?
Without knowing if we can meaningfully resolve, and the rate at which it occurs, or how to design a solution, this story currently has low priority.
As a user, if my Riff connection is unstable, I'd like Riff to just fix it so that I can continue to meet with my group with as little interruption as possible. I don't want to waste time waiting to see if the my audio and video unfreeze, or have to decide if I should just leave and rejoin the meeting to try to fix it myself. I'd like to know that Riff is doing something about it, so I have some expectation that the problem will get fixed without me having to do anything about it.
Story Acceptance Criteria
Mockups for this story are here, When Riff Wireframe: "background connection retry": https://drive.google.com/file/d/1CEQzjFj6OCwqoy6aXJb-6hMbaG9T1kS7/view?usp=sharing
[ ] Retry message should display as depicted in the mockup. Same design pattern as error messages on login page - (colored box that can be dismissed by the user.)
[ ] If the user does not dismiss the message, it should clear on its own once the connection has been reestablished.
[ ] When a connection drops - and results in frozen or latent audio or video - Riff should immediately attempt to reestablish a connection and display a message.
[ ] If Riff is not able to establish a new connection w.in 3 seconds, it should try a new attempt.
[ ] If Riff can not establish a new connection within 6 seconds, it should message the user it cannot, and tell the user to leave and rejoin the meeting.