createRoom()
Ball2D servisiyle bir odayı kabul eder, host'unu başlatır ve odayla sonuçlanır.
createRoom() ayarlarınızı doğrular, servisten odayı kabul etmesini ister, motoru yükler, sinyalleşmeye bağlanır ve servis işleminizi host olarak onayladığında sonuçlanır. Herhangi bir adım başarısız olursa reddeder ve başlattığı her şeyi temizler.
Node.js
createRoom()
createRoom(config: NodeRoomConfig, creation?: CreateRoomOptions): Promise<NodeRoom>Başlatmanın tamamı 15 saniye içinde tamamlanmalıdır. Eksik veya hatalı biçimlendirilmiş bir API anahtarı, başka herhangi bir ayardan önce ve motor veya ağa dokunulmadan önce bildirilir.
| Hata | Şununla reddedilir |
|---|---|
Eksik veya hatalı biçimlendirilmiş apiKey | TypeError: A valid API key is required. |
serviceOrigin HTTPS değilse ve kendi makineniz değilse | TypeError |
| Geçersiz bir oda ayarı | Ayarı adlandıran bir Error |
| Servis odayı reddederse | RoomAdmissionError |
| Başlatma 15 saniyeden uzun sürerse | TimeoutError adlı bir DOMException |
creation.signal, başlatma sırasında iptal edilirse | Sinyalin reason'ı |
Parametreler
CreateRoomOptions{ signal } geçirin.Döndürür
Promise<NodeRoom>Host yetkisi onaylandığında çalışan odayla sonuçlanır.
import {
createRoom,
RoomAdmissionError,
} from 'ball2d/node';
try {
const room = await createRoom({
apiKey: process.env.BALL2D_API_KEY,
roomName: 'Evening football',
noPlayer: true,
maxPlayers: 12,
public: true,
});
console.log(room.roomLink);
} catch (error) {
if (error instanceof RoomAdmissionError) {
console.error(error.status, error.message);
} else throw error;
}const room = await createRoom(config, {
signal: AbortSignal.timeout(10_000),
});NodeRoomConfig
İçe aktarmaball2d/node
interface NodeRoomConfig extends RoomConfigstringhttps://ball2d.com. Yerel geliştirme için http://localhost, http://127.0.0.1 ve http://[::1] hariç HTTPS olmalıdır ve yol, sorgu veya kimlik bilgisi içermemelidir. Özel bir origin, eşleşen bir Ball2D dağıtımı sunmalıdır.stringzorunlub2d_ ardından 64 küçük harfli onaltılık karakter. Sadece serviceOrigin'e gönderilir.NodeRoom
İçe aktarmaball2d/node
createRoom()'un Node.js'de sonuçlandığı değer: her Room özelliği, metodu ve olayı, artı closed.
closed
room.closed: Promise<void>Oda kapandıktan ve işleminiz host'un kullandığı her şeyi serbest bıraktıktan sonra sonuçlanır: simülasyon, eşler arası bağlantılar ve servis yetkilendirmesi. Odanın bağlantısının zaman aşımına uğramasını beklememesi için çıkmadan önce bunu bekleyin.
Yalnızca eş taşımasının kendisini kapatma başarısız olursa reddeder.
room.close();
await room.closed;
process.exit(0);Ayarlar
RoomConfig
İçe aktarmaball2d
Her iki girişin de paylaştığı ayarlar. Bilinmeyen anahtarlar reddedilir, böylece bir yazım hatası göz ardı edilmek yerine başlatmada başarısız olur.
interface RoomConfigbooleanfalse olduğunda (varsayılan), host playerName ile adlandırılan bir yönetici olarak oyuncu 0 slotunu alır. Tamamen kodla çalışan bir oda için true olarak ayarlayın. sendChat() host oyuncusuna gerek duyar.stringHost. Yalnızca noPlayer false olduğunda kullanılır.stringHeadless Room.number12.stringsetPassword() ile değiştirin.booleanfalse: oda yalnızca bağlantısıyla erişilebilir.stringsetDefaultStadium() çağırın.RoomGeoCreateRoomOptions
İçe aktarmaball2dball2d/node
interface CreateRoomOptionsAbortSignalRoomGeo
Adıyla dışa aktarılmaz; onu döndüren değerler üzerinden erişin.
interface RoomGeoGenel keşif konumu; asla bir yönlendirme veya yetkilendirme iddiası değildir.
stringzorunluDE. Büyük/küçük harfe duyarsız.numberzorunlunumberzorunluTarayıcı
Tarayıcıda createRoom()
createRoom(config?: RoomConfig, options?: CreateRoomOptions): Promise<Room>Tarayıcı girişi, bir Ball2D dağıtımı tarafından sunulan bir sayfadan bir odayı host eder. Sayfanın kendi origin'inin servisini, motorunu ve stadyum dosyalarını kullanır, tarayıcı kabul politikasını izler ve asla API anahtarı almaz. Bkz. Tarayıcı girişi.
Parametreler
RoomConfigCreateRoomOptions{ signal } geçirin.Döndürür
Promise<Room>Çalışan odayla sonuçlanır.
import { createRoom } from 'ball2d';
const room = await createRoom({
roomName: 'Practice',
});