RecipesDeny a Player Joining a Room

Deny a Player Joining a Room

You can deny a player connection by throwing an error during onAuth() or onJoin() methods.

The implementation of when to deny a player connection will depend on your use-case.

Below you can see an example validating an authentication token, and retrieving a Hero record linked with the user id.

BattleRoom.ts
export class BattleRoom extends Room {
 
  onCreate(options) {
    this.levelRequired = 10;
  }
 
  async onAuth(client, options) {
    const userId = verifyToken(options.token)._id;
    const hero = await Hero.findOne({ userId });
 
    if (!hero) {
      throw new Error("'Hero' not found in the database!");
 
    } else if (hero.level < this.levelRequired) {
      throw new Error("player do not have the level required to be on this room.");
 
    }
 
    return hero;
  }
 
}

The client will then receive an error when trying to join the room:

client.js
client.joinOrCreate("battle", {}).then(room => {
  // ...
}).catch(e => {
  console.log(e) // "'Hero' not found in the database!"
})
Last updated on