UNPKG

@colyseus/core

Version:

Multiplayer Framework for Node.js.

57 lines (56 loc) 1.78 kB
// packages/core/src/utils/Env.ts import os from "os"; import { LocalPresence } from "../presence/LocalPresence.mjs"; import { LocalDriver } from "../matchmaker/LocalDriver/LocalDriver.mjs"; import { logger } from "../Logger.mjs"; function isColyseusCloud() { return process.env.COLYSEUS_CLOUD !== void 0; } function shouldUseRedisOnCloud() { return os.cpus().length > 1 || process.env.REDIS_URI !== void 0; } async function getDefaultPresence() { if (isColyseusCloud() && shouldUseRedisOnCloud()) { try { const RedisPresence = await import("@colyseus/redis-presence"); return new RedisPresence.RedisPresence(process.env.REDIS_URI); } catch (e) { console.error(e); logger.warn(""); logger.warn("\u274C could not initialize RedisPresence."); logger.warn("\u{1F449} npm install --save @colyseus/redis-presence"); logger.warn(""); } } return new LocalPresence(); } async function getDefaultDriver() { if (isColyseusCloud() && shouldUseRedisOnCloud()) { try { const RedisDriver = await import("@colyseus/redis-driver"); return new RedisDriver.RedisDriver(process.env.REDIS_URI); } catch (e) { console.error(e); logger.warn(""); logger.warn("\u274C could not initialize RedisDriver."); logger.warn("\u{1F449} npm install --save @colyseus/redis-driver"); logger.warn(""); } } return new LocalDriver(); } function getDefaultPublicAddress() { if (isColyseusCloud()) { let port = 2567; port += Number(process.env.NODE_APP_INSTANCE || "0"); return process.env.SUBDOMAIN + "." + process.env.SERVER_NAME + "/" + port; } else { return void 0; } } export { getDefaultDriver, getDefaultPresence, getDefaultPublicAddress, isColyseusCloud };