Biblioteca
Crear y entrar en salas
createRoom, joinRoom y todas las opciones de configuración.
Crear una sala: createRoom()
Devuelve un BonkRoom ya conectado y activo. Solo se resuelve tras recibir el enlace de la sala del servidor.
ts
import { createRoom } from 'bonktools';
const room = await createRoom({
auth: { type: 'registered', username: '...', password: '...' },
desiredState: {
roomName: 'Mi Sala',
password: '', // cadena vacía = sin contraseña
maxPlayers: 6,
mode: 'b',
rounds: 3,
},
hidden: false, // aparece en la lista pública
timeoutMs: 10_000, // rechaza con RoomCreationTimeoutError si tarda más
});
console.log(room.shareLink); // https://bonk.io/123456abcdeOpciones de createRoom()
| Campo | Tipo | Por defecto | Descripción |
|---|---|---|---|
auth | AuthOptions | — | Estrategia de autenticación (obligatorio) |
desiredState | DesiredRoomState | — | Configuración de la sala (obligatorio) |
hidden | boolean | false | Oculta la sala de la lista pública |
minLevel | number | 0 | Nivel mínimo para entrar |
maxLevel | number | 999 | Nivel máximo para entrar |
timeoutMs | number | 10000 | Tiempo máximo para recibir el enlace de la sala |
protocolVersion | number | 49 | Versión del protocolo de bonk.io |
reconnectPolicy | ReconnectPolicyOptions | valores por defecto | Política de reconexión (consulta Sesiones 24/7) |
DesiredRoomState
ts
interface DesiredRoomState {
roomName: string;
password: string; // '' = sin contraseña
maxPlayers: number; // 1–8
mode: string | number; // 'b', 'ar', 'ard', 'sp', 'v', 'f'...
engine?: string; // 'b', 'f'...
rounds: number;
map?: string | null; // blob LZ-String del mapa
}Enlace de la sala
El enlace tiene la forma https://bonk.io/<id de 6 dígitos><bypass>. La biblioteca rellena el id con ceros a la izquierda (ids menores que 100000 producen enlaces como 006813vnxpi).
Entrar en una sala: joinRoom()
ts
import { joinRoom } from 'bonktools';
const room = await joinRoom('https://bonk.io/123456abcde', {
auth: { type: 'registered', username: '...', password: '...' },
role: 'host', // 'host' (equipo 1) o 'spectator' (equipo 0)
password: '', // contraseña de la sala, si la hay
});La biblioteca analiza la URL, resuelve el servidor mediante autojoin.php y se conecta. Se resuelve tras recibir el estado de la sala, o rechaza con RoomJoinTimeoutError.
También acepta una dirección ya resuelta, sin llamada HTTP:
ts
const room = await joinRoom(
{ server: 'b2seattle1', joinId: '...', bypass: 'abcde' },
{ auth, role: 'spectator' },
);Errores
ts
import { RoomCreationTimeoutError, RoomJoinTimeoutError } from 'bonktools';
try {
const room = await createRoom({ auth, desiredState });
} catch (err) {
if (err instanceof RoomCreationTimeoutError) {
// el enlace de la sala no llegó dentro de timeoutMs
}
}Consulta también Errores y solución de problemas.