During the TiMes performance, @Ulexus and I have noticed that there are multiple Web Socket connections per client—two are opened when the spatial room is loaded, and three are opened for the track list page.
Right now, we are instantiating multiple PerformanceTime instances at module scope, and when those modules are imported by other modules, we get multiple web sockets as a result. room.js and tracks.js should be refactored into classes that take a PerformanceTime as an argument to their constructors.
We also noticed that the iOS app is holding on to web sockets across tabs, but haven't yet had a chance to debug why.