Socket.io Node.js Object Oriented Code Structure Approach
Just a few comments:

1:
The Room class can quickly become a place to throw in all sorts of functionality, even when it's not needed by all its children. 
I would be careful to not put much there at all, and rather compose the different rooms with needed functionality.
For example, a GameRoom may be composed by a chat, game queue, lobbies, and even user management.
Using composition like this can make it much easier to build different types of rooms, without having to throw every bit of common code into Room. I would even consider removing Room altogether if possible.

2:
In your socket callbacks, I would only put in single function calls to methods in your class.
This way, if you want to test one of these functions, you don't need to go via the socket callbacks.
Also, when instantiating your classes, I would consider not running the listener immediately.
If you're testing this, you don't want the hassle of mocking up io if you don't need to. 

But I think an even better way to do this would be to abstract away the socket stuff from these classes entirely.
This could be a bit too much though, depending on the complexity of the app.

3:
Consider replacing 

this.lobbies.push(new Lobby(this.name ,lobbyId, participants, this.io));


with something like

this.lobbies.push(this.lobbyFactory.create(this.name, lobbyId, participants));


This is useful for testing, since you don't force the usage of one particular lobby.
It's also useful if you decide to have different types of lobbies later on.
Then you can just inject another type of lobbyFactory.