Bibliothèque
Créer et rejoindre des salons
createRoom, joinRoom et toutes les options de configuration.
Créer un salon : createRoom()
Renvoie un BonkRoom déjà connecté et actif. Il ne se résout qu'après réception du lien du salon par le serveur.
ts
import { createRoom } from 'bonktools';
const room = await createRoom({
auth: { type: 'registered', username: '...', password: '...' },
desiredState: {
roomName: 'Mon Salon',
password: '', // chaîne vide = pas de mot de passe
maxPlayers: 6,
mode: 'b',
rounds: 3,
},
hidden: false, // apparaît dans la liste publique
timeoutMs: 10_000, // rejette avec RoomCreationTimeoutError si cela prend plus longtemps
});
console.log(room.shareLink); // https://bonk.io/123456abcdeOptions de createRoom()
| Champ | Type | Par défaut | Description |
|---|---|---|---|
auth | AuthOptions | — | Stratégie d'authentification (obligatoire) |
desiredState | DesiredRoomState | — | Configuration du salon (obligatoire) |
hidden | boolean | false | Masque le salon de la liste publique |
minLevel | number | 0 | Niveau minimum pour entrer |
maxLevel | number | 999 | Niveau maximum pour entrer |
timeoutMs | number | 10000 | Temps maximum pour recevoir le lien du salon |
protocolVersion | number | 49 | Version du protocole bonk.io |
reconnectPolicy | ReconnectPolicyOptions | valeurs par défaut | Politique de reconnexion (voir Sessions 24h/24) |
DesiredRoomState
ts
interface DesiredRoomState {
roomName: string;
password: string; // '' = pas de mot de passe
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 de la carte
}Lien du salon
Le lien a la forme https://bonk.io/<id à 6 chiffres><bypass>. La bibliothèque complète l'id avec des zéros à gauche (les ids inférieurs à 100000 donnent des liens comme 006813vnxpi).
Rejoindre un salon : joinRoom()
ts
import { joinRoom } from 'bonktools';
const room = await joinRoom('https://bonk.io/123456abcde', {
auth: { type: 'registered', username: '...', password: '...' },
role: 'host', // 'host' (équipe 1) ou 'spectator' (équipe 0)
password: '', // mot de passe du salon, s'il y en a un
});La bibliothèque analyse l'URL, résout le serveur via autojoin.php et se connecte. Elle se résout après réception de l'état du salon, ou rejette avec RoomJoinTimeoutError.
Elle accepte aussi une adresse déjà résolue, sans appel HTTP :
ts
const room = await joinRoom(
{ server: 'b2seattle1', joinId: '...', bypass: 'abcde' },
{ auth, role: 'spectator' },
);Erreurs
ts
import { RoomCreationTimeoutError, RoomJoinTimeoutError } from 'bonktools';
try {
const room = await createRoom({ auth, desiredState });
} catch (err) {
if (err instanceof RoomCreationTimeoutError) {
// le lien du salon n'est pas arrivé dans le délai timeoutMs
}
}Voir aussi Erreurs et dépannage.