Oda
createRoom()'un sonuçlandığı kontrolcü; kimlik, yaşam döngüsü ve metot grupları.
Bir Room, çalışan bir oda üzerindeki tutamacınızdır. Salt okunur kimlik, senkron okumalar, kuyruğa alınmış komutlar ve olay özellikleri sunar. Node.js'de createRoom(), closed ekleyen bir NodeRoom ile sonuçlanır.
İçe aktarmaball2d
| Grup | Metotlar |
|---|---|
| Oyuncular ve takımlar | getPlayerList getPlayer setPlayerTeam setPlayerAdmin setPlayerAvatar reorderPlayers setTeamsLock setTeamColors |
| Moderasyon | setPlayerMuted kickPlayer clearBan clearBans setPassword setRequireVerification |
| Sohbet | sendChat sendAnnouncement |
| Maçlar | startGame stopGame pauseGame setScoreLimit setTimeLimit setKickRateLimit getScores getState getBallPosition |
| Stadyumlar | setDefaultStadium setCustomStadium |
| Fizik | CollisionFlags getDiscCount getDiscProperties setDiscProperties getPlayerDiscProperties setPlayerDiscProperties |
| Kayıt | startRecording stopRecording lastRecording |
Kimlik
roomId
room.roomId: stringOdanın tanımlayıcısı: on küçük harfli onaltılık karakter, örneğin 3f9a0c41be.
console.log(room.roomId); // "3f9a0c41be"roomLink
room.roomLink: stringOyuncuların katılmak için açtığı davet URL'si, varsayılan servisteki odalar için https://ball2d.com/r/<roomId>. createRoom() sonuçlanır sonuçlanmaz kullanılabilir.
console.log(`Join at ${room.roomLink}`);roomName
room.roomName: stringcreateRoom()'a geçirdiğiniz roomName, tam olarak verildiği gibi.
Yaşam döngüsü
signal
room.signal: AbortSignalOda herhangi bir nedenle kapandığında iptal edilen bir AbortSignal: close() çağrınız, kaybedilen bir bağlantı, iptal edilmiş veya süresi dolmuş bir anahtar. Odayla birlikte durması gereken zamanlayıcılara, fetch'lere ve döngülere geçirin.
const timer = setInterval(
announceScore,
60_000,
);
room.signal.addEventListener('abort', () =>
clearInterval(timer),
);
// Or stop a fetch when the room ends:
await fetch(url, { signal: room.signal });close()
room.close(): voidOdayı kapatır. Tekrar çağırmak hiçbir şey yapmaz. Sırasıyla:
- Kuyruktaki her komutu
Room is closedile reddeder. signal'i iptal eder.- Etkin bir kaydı sonlandırır ve neden olarak
Room closedileonRecordingComplete'a iletir. - Servisten ayrılır, bu da oyunculara host'un ayrıldığını bildirir.
close() hemen döner. Node.js'de, temizliğin tamamlanması için closed'i bekleyin. Her oyuncunun kapanma bildirimini almasını beklemez.
Kapandıktan sonra komutlar reddedilir, olaylar durur (son onRecordingComplete hariç), getPlayerList() [] döndürür ve diğer okumalar null veya 0 döndürür.
for (const signal of ['SIGINT', 'SIGTERM']) {
process.once(signal, async () => {
room.close();
await room.closed;
process.exit(0);
});
}