@colyseus/core
Version:
Multiplayer Framework for Node.js.
30 lines (29 loc) • 898 B
JavaScript
// packages/core/src/matchmaker/Lobby.ts
import * as matchMaker from "../MatchMaker.mjs";
var LOBBY_CHANNEL = "$lobby";
function updateLobby(room, removed = false) {
const listing = room.listing;
if (listing.unlisted) return;
if (removed) {
matchMaker.presence.publish(LOBBY_CHANNEL, `${listing.roomId},1`);
} else if (!listing.private) {
matchMaker.presence.publish(LOBBY_CHANNEL, `${listing.roomId},0`);
}
}
async function subscribeLobby(callback) {
const cb = async (message) => {
const [roomId, isRemove] = message.split(",");
if (isRemove === "1") {
callback(roomId, null);
} else {
const room = (await matchMaker.query({ roomId }))[0];
callback(roomId, room);
}
};
await matchMaker.presence.subscribe(LOBBY_CHANNEL, cb);
return () => matchMaker.presence.unsubscribe(LOBBY_CHANNEL, cb);
}
export {
subscribeLobby,
updateLobby
};