The userlist for a room us updated only when joining a room, or when another user is entering the room that the client is currently in.
This is exactly correct. From client side you are not able to "see" the users in a room that you haven't joined.
The reason is (of course) bandwidth optimization, otherwise the client would need to receive huge amount of packets.
That means you would need to join a room to get the requested info - no other way around it.
There are way around it: server side extensions.
If you need to enhance the data that you can "see" from client side you can perform any custom call to your server side code and receive back any information that is relevant to your application logic.
One case scenario, which I believe matches this post, is when you need to see the names of the users playing in a certain room, or maybe the room variables of a game room etc...
Instead of joining that room you can simply send a request to your server side code... like: "hey, tell me the names of the players in game room #10"
This way you just take a peek at the room's user list on-demand, instead of having the server continuosly firing updates at you about any user list in any room which would be an overkill.
A more in-depth analysis of this use case can be found in this discussion: viewtopic.php?p=12388#12388
It's related with Room Variables and their visibility from outside of the room, the same concept applies for user lists.
Hope it helps