Message Validation and Security
Use this reference when defining room message handlers.
Validation Pattern
- Parse payload with schema validation (for example Zod).
- Enforce role or ownership constraints.
- Enforce gameplay constraints (cooldowns, ranges, turn order).
- Apply validated mutation to server state.
Handler Skeleton
room.onMessage("move", (client, payload) => {
const parsed = moveSchema.safeParse(payload);
if (!parsed.success) return;
const player = room.state.players.get(client.sessionId);
if (!player) return;
if (!isValidDelta(player, parsed.data)) return;
player.x = parsed.data.x;
player.y = parsed.data.y;
});
Security Rules
- Never trust client-derived score, inventory, or authority flags.
- Keep anti-cheat checks on server.
- Rate-limit spam-prone message types.