This is how BigBlueButton is designed. To understand why, a bit of background on what's actually happing when the user connects.
If the user is on FireFox or Chrome, then when the BigBlueButton client first loads it attempts to connect the user's audio via WebRTC (Plan A) and, if unsuccessful, then falls back to Flash audio (Plan B). If the user is using a browser that doesn't support WebRTC, then the client goes directly to Plan B.
With WebRTC audio, your browser needs to make two network connections: a web socket connection via TCP/IP and real-time protocol (RTP) connection via UDP to FreeSWITCH. If an error occurs in establishing either of these network connection, you will see one of the error messages in the client
and the client will fall back to connecting with Flash.
However, if both network connections are successful, you'll the client will display the echo test. Why? Even with a successful network connection, we've found that there could still be firewall issues that prevent the RTP packets from transmitting or receiving, which results in either you can't hear others or other's can't hear you. The echo test is a way to determine if there is any such issues exist. Furthermore, in the echo test, the user's audio is being transmitting from their client to the BigBlueButton server (specifically to FreeSWITCH) and back again to their speaker. It's a round trip of the packets, so the question "Can you hear yourself" is another way of determining the microphone is working, the packets are successfully transmitted/received, and the speakers are working.
If the user clicks 'Yes', then the client enters them into the conference. At this point, we're pretty much 100% certain that audio is working -- (a) the microphone is picking up audio, (b) the audio is successfully transmitted via RTP, (c) the audio is successfully received via RTP, and (d) the audio comes out through the user's speaker and is hear. The echo tests significantly reduces scenarios where a student enters the audio conference and -- if one of (a), (b), (c), or (d) is not working, encounters the problem during the live class and starts typing "Can anyone hear me?" or, if the user is the instructor, students start typing into the chat "We can't hear you". We want to avoid these scenarios at all costs.
The point of describing the above is to see there is a *lot* that happens under the hood that is invisible to the user (just as there is a lot that happens when you make a cell phone call -- it almost always works, but it's pretty complex). So the echo test is pretty important for ensuing the WebRTC connection is fully working.
HOWEVER, if the user clicks 'No', then the BigBlueButton client assumes that something didn't work with WebRTC -- in other words, one or more of (a), (b), (c), or (d) failed and it's really hard to figure out which one. At this point, the client falls back to Plan B and uses Flash.
While Flash is not as good audio as WebRTC, it's still pretty good and gives the user more options to troubleshoot, such as selecting a different microphone. In the past, the browser's implementation of WebRTC didn't give a uniform API to letting the user select the microphone -- it always picks the default microphone given by the operating system. As an aside, that's why the Setting Up Audio video shows how the user can changed their default microphone in Mac OS X and Windows, see
With Flash audio, the user can choose a different microphone which might solve (a), the media packets go through a different network connection (TCP/IP vs. UDP) which might solve (b) or (c), and the user can test their speaker -- which is still the default speaker, but it might help the user realize the problem resides with (d).
So, what you encountered with clicking 'No' is the the logic built into the BigBlueButton client to *not* attempt WebRTC audio again during the user's session.
Why? If the user clicked 'No', then the client must assume that something in (a), (b), (c), or (d) failed and it's likely not going to magically work again later into their session. When the user clicks 'No', the client uses Flash-based audio and stays there for the remainder of the session. That is, if the user later clicks the headset icon to leave the audio bridge and then clicks the headset icon to rejoin, the client will immediately join via Flash and *not* attempt WebRTC again.
If the user really wants to try WebRTC audio again, such as they switched their laptop from wireless to wired connections, they can click the refresh button on their browser and reload the BigBlueButton client anew. On reload the client will again attempt to connect the user via WebRTC first again (and hopefully work!).
It looks like Mconf is trying WebRTC audio again when the user clicks the headset icon to leave and rejoin the audio. We're probably not going to change BigBlueButton to try that approach as we believe that if either (a), (b), (c), or (d) was broken for the initial WebRTC attempt and won't fix itself. Also, if WebRTC didn't work and Flash does, then taking them back to the echo test each time they attempt to rejoin the audio is going to slow down the leaving/rejoining of audio.
So, the above is another way of saying if one of the audio paths works (WebRTC or Flash), the BigBlueButton stays with that audio for the remainder of the session.