I've updated the code to filter the result to only contain the public rooms. It is returns as an array of strings. I don't return it as an object with clients as the redis adapter doesn't support this.
Your solution is nicer since you know how many clients are in the room, but this doesn't work on cluster/redis so didn't implement it.
I've also updated the rooms action which returns the rooms joined for the current client which also showed the private room.