İçeriğe atla

Oda ve olaylar

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

GrupMetotlar
Oyuncular ve takımlargetPlayerList getPlayer setPlayerTeam setPlayerAdmin setPlayerAvatar reorderPlayers setTeamsLock setTeamColors
ModerasyonsetPlayerMuted kickPlayer clearBan clearBans setPassword setRequireVerification
SohbetsendChat sendAnnouncement
MaçlarstartGame stopGame pauseGame setScoreLimit setTimeLimit setKickRateLimit getScores getState getBallPosition
StadyumlarsetDefaultStadium setCustomStadium
FizikCollisionFlags getDiscCount getDiscProperties setDiscProperties getPlayerDiscProperties setPlayerDiscProperties
KayıtstartRecording stopRecording lastRecording

Kimlik

roomId

özellik
room.roomId: string
salt okunur

Odanın tanımlayıcısı: on küçük harfli onaltılık karakter, örneğin 3f9a0c41be.

JavaScript
console.log(room.roomId); // "3f9a0c41be"
özellik
room.roomLink: string
salt okunur

Oyuncuları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.

JavaScript
console.log(`Join at ${room.roomLink}`);

roomName

özellik
room.roomName: string
salt okunur

createRoom()'a geçirdiğiniz roomName, tam olarak verildiği gibi.

Yaşam döngüsü

signal

özellik
room.signal: AbortSignal
salt okunur

Oda 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.

JavaScript
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()

yöntem
room.close(): void

Odayı kapatır. Tekrar çağırmak hiçbir şey yapmaz. Sırasıyla:

  1. Kuyruktaki her komutu Room is closed ile reddeder.
  2. signal'i iptal eder.
  3. Etkin bir kaydı sonlandırır ve neden olarak Room closed ile onRecordingComplete'a iletir.
  4. 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.

Düzgün kapatma
for (const signal of ['SIGINT', 'SIGTERM']) {
  process.once(signal, async () => {
    room.close();
    await room.closed;
    process.exit(0);
  });
}