Makadirio
Kushiriki kwa kushiriki
Kutuma mstereani
Kamati mbili. Unda yake kwenye mzunguko wako, kumbusha mwanafunzi mwenyewe kwa kutumia kichupo cha mwanafunzi cha Lia au kichupo, na kusimama wanaoshiriki kwenye kamati moja.
Makosa: chumba anakuwa na id, na id inapita kwenye kushiriki's startParam. Mwenye akifungua kushiriki akifungua app yako na startParam hilo, na mzunguko wako unapita kwa wao. Lia'yeye Lia XO inatendwa kama hivyo.
#1. Unda chumba kwenye server yako
app.post("/api/rooms", async (req, res) => {
const playerId = await playerFrom(req.body.session); // see Verify on your server
if (!playerId) return res.status(401).end();
const room = "room-" + crypto.randomUUID().replace(/-/g, "").slice(0, 10);
await db.createRoom(room, { host: playerId, players: [playerId] });
res.json({ room });
});
app.post("/api/rooms/join", async (req, res) => {
const playerId = await playerFrom(req.body.session);
if (!playerId) return res.status(401).end();
const room = await db.room(req.body.room);
if (!room) return res.status(404).json({ error: "no_room" });
if (room.players.length >= 2 && !room.players.includes(playerId)) return res.status(409).json({ error: "full" });
await db.addPlayer(req.body.room, playerId);
res.json({ room: req.body.room });
});Idadi za chumba zinapaswa kufuata startParam: 1 kwa 64 ya maneno, namba, _ na -.
#2. Kushiriki mwanafunzi
async function playWithAFriend() {
const { room } = await api("/api/rooms", {});
showWaiting(room);
const { invited } = await Lia.inviteFriend({ startParam: room });
if (!invited) Lia.toast("Share the link to invite someone");
}
// Or a link to send anywhere: opens your app in Lia, or the App Store without it.
async function shareRoom(room) {
await Lia.share("Play with me: " + Lia.inviteLink(room));
}Kila mwanafunzi aliyopewa anashiriki kwenye Lia chat. Lia tu anasimamia watu kuzalisha mwanafunzi wao, na tu mwanafunzi ambao wanaweza kufungua mfumo wako (kwa wakati's kwenye test, tu wao wakala).
#3. Kusafisha chumba
Kusoma startParam wakati app yako inachukua, na kushughulikia kumiliki kwa wakati's kuvunjika (mtu anatapika mtaa mwingine):
function route(startParam) {
if (startParam && startParam.startsWith("room-")) joinRoom(startParam);
}
Lia.init().then(function () {
route(Lia.startParam);
Lia.ready();
});
Lia.on("startParam", function (data) { route(data.startParam); });
async function joinRoom(room) {
try {
await api("/api/rooms/join", { room });
openTable(room);
} catch (error) {
Lia.toast(error.message === "full" ? "That game is full" : "That game has ended");
}
}Mfano wa startParam ni tu kichaguo: yeyote anaweza kuzalisha link na startParam wowote, kwa hivyo server yako inayokubali kama chumba kina na mteja anaweza kuingia.
#4. Tafuta kwa sasa
Kokoa mchezaji wote kwenye serikali yako (kwa kawaida WebSocket inafanana), na kuthibitisha kila mchezaji'kikosi cha asili kabla ya kushirikiana na kila mmoja kwenye chumba. Wakati mchezo unakamata:
Lia.enableClosingConfirmation(); // "Leave the game?" if they close
Lia.disableVerticalSwipes(); // a swipe down won't close the sheet mid move
Lia.onPause(function () { socket.send(JSON.stringify({ type: "away" })); });
Lia.onResume(function () { socket.send(JSON.stringify({ type: "back" })); });#5. Mwaka wako, kwa kumbukumbu
Wakati ina'kawaida'chaguo na wao'amefika kwenye app yako, kwa ujumbe na kwa ajili ya chumba kama startParam huzalisha kwa kawaida:
{ "playerId": "p_3f9c0a6d1b2e4f5a6b7c", "text": "@kofi played. Your move.", "startParam": "room-a81c2e09f4" }#Maktaba ya kawaida
Wakosa ni kwa mwanafunzi. Kukusanya wakosa wote kwenye Lia pia kusafisha chumba kwenye kifundo wakati inatoka:
// When the room is made: list it (as the host, with one seat taken).
await lia("POST", "/lobby/tables", { tableId: room, hostPlayerId: playerId, seats: 2, taken: 1, title: "Quick game" });
// When someone joins from the lobby: seat them through Lia first (it refuses blocked players and full tables).
app.post("/api/rooms/sit", async (req, res) => {
const playerId = await playerFrom(req.body.session);
if (!playerId) return res.status(401).end();
try {
const { full } = await lia("POST", `/lobby/tables/${encodeURIComponent(req.body.room)}/sit`, { playerId });
await db.addPlayer(req.body.room, playerId);
if (full) startGame(req.body.room);
res.json({ room: req.body.room });
} catch (error) {
res.status(409).json({ error: error.data?.error ?? "failed" }); // full, not_found, own_table
}
});
// When the game starts or the room closes: take it out (safe to repeat).
await lia("DELETE", `/lobby/tables/${encodeURIComponent(room)}`);Katika paji yako, onyesha tabia zilizopewa, na kusaidia watu ambao wamechagua paji yako kwenye Lia'yeye kikao (wao wana startParam lobby-<table id>):
const { tables } = await Lia.lobby.tables();
renderTables(tables, (table) => api("/api/rooms/sit", { room: table.id }));
function route(startParam) {
if (startParam?.startsWith("lobby-")) return api("/api/rooms/sit", { room: startParam.slice(6) }).then(openTable);
if (startParam?.startsWith("room-")) return joinRoom(startParam);
}Mwanamke wanaopendwa't chat through Lia, blocks are respected, and players can matokeo kila mmoja.
#Kutembea kwa kujifunza
- Mtu mmoja anaweza kumwambia 20 wenzao kwenye app yako kila siku, kwa hiyo mafunzo yataendelea kuwa wakati wao wanaomba kwenye mazungumzo yao.
- Mshirikiano anaweza kuwa na 3 tabili ya kushirikiana kwenye app yako kwa wakati mmoja, na mifano inapungua kwa muda wa saa moja.
Lia.inviteFriend()jibu{ invited }, sikuwezi kama aliyetuma: server yako anajifunza kama aliyotuma.
Kutafsiri kwa kawaida. Kiingereza kina maana ya kawaida. Kusoma kwa Kiingereza