@colyseus/core
Version:
Multiplayer Framework for Node.js.
57 lines (56 loc) • 1.78 kB
JavaScript
// 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
};