Make utility function to auth and create websocket
Support joining multiple rooms

There seem to be two ways to actually join a room: One is to interact
with the room, for example by sending a message to it. The other is to
connect (not just authenticate) to the websocket.

So to join another room, create a new websocket for that room and close it
immediately after connecting again. As the session is shared on the
server, all other websockets will automatically upgrade to include the
newly joined room. So the main websocket we are listening to will start to
report about the new room just like that.