Limit the instance of rooms

Hi everyone.
Is there any way I can limited the client to add or create only one instance? Can I complete this requirement without modifying the framework? For example, I'm going to hold a competition. I want control to be created by the system, and I don't want players to create rooms.

I think of a way, but I don't think it's elegant enough.

//server side
let room=matchMaker.createRoom("match" {secret:OnlySystemKnowPassWord});

//client side
ws.joinOrCreate("match");//aways faild

Do you have any ideas? @endel thank you!

Hi @BlueBang, this is a good feature request. The workaround you can currently do is using exactly what you've mentioned:

let room = matchMaker.createRoom("match" { secret:OnlySystemKnowPassWord });

// ...

class MatchRoom extends Room {
  onCreate(options) {
    if (options.secret !== OnlySystemKnowPassWord) {
      throw new Error("not_allowed");
    }
  }
}

Cheers!

You can check an example that does create a room from the server, and joins using client.consumeSeatReservation() here: https://github.com/endel/colyseus-ranked-matchmaking

@endel Great. I can learn something new again. Thank you for your reply.😁