@colyseus/core
Version:
Multiplayer Framework for Node.js.
27 lines (26 loc) • 894 B
JavaScript
// packages/core/src/discovery/index.ts
var NODES_SET = "colyseus:nodes";
var DISCOVERY_CHANNEL = "colyseus:nodes:discovery";
async function getHostname() {
return process.env.SELF_HOSTNAME;
}
async function getNodeAddress(node) {
const host = await getHostname();
const port = process.env.SELF_PORT ?? node.port;
return port ? `${node.processId}/${host}:${port}` : `${node.processId}/${host}`;
}
async function registerNode(presence, node) {
const nodeAddress = await getNodeAddress(node);
await presence.sadd(NODES_SET, nodeAddress);
await presence.publish(DISCOVERY_CHANNEL, `add,${nodeAddress}`);
}
async function unregisterNode(presence, node) {
const nodeAddress = await getNodeAddress(node);
await presence.srem(NODES_SET, nodeAddress);
await presence.publish(DISCOVERY_CHANNEL, `remove,${nodeAddress}`);
}
export {
getHostname,
registerNode,
unregisterNode
};