@colyseus/core
Version:
Multiplayer Framework for Node.js.
51 lines (50 loc) • 1.8 kB
JavaScript
// packages/core/src/matchmaker/controller.ts
import { ErrorCode } from "../Protocol.mjs";
import { ServerError } from "../errors/ServerError.mjs";
import * as matchMaker from "../MatchMaker.mjs";
var controller_default = {
DEFAULT_CORS_HEADERS: {
"Access-Control-Allow-Headers": "Origin, X-Requested-With, Content-Type, Accept, Authorization",
"Access-Control-Allow-Methods": "OPTIONS, POST, GET",
"Access-Control-Allow-Credentials": "true",
"Access-Control-Allow-Origin": "*",
"Access-Control-Max-Age": "2592000"
// ...
},
exposedMethods: ["joinOrCreate", "create", "join", "joinById", "reconnect"],
allowedRoomNameChars: /([a-zA-Z_\-0-9]+)/gi,
matchmakeRoute: "matchmake",
/**
* You can manually change the default corsHeaders by overwriting the `getCorsHeaders()` method:
* ```
* import { matchMaker } from "@colyseus/core";
* matchMaker.controller.getCorsHeaders = function(req) {
* if (req.headers.referer !== "xxx") {
* }
*
* return {
* 'Access-Control-Allow-Origin': 'safedomain.com',
* }
* }
* ```
*/
getCorsHeaders(req) {
const origin = req.headers && req.headers["origin"] || req.getHeader && req.getHeader("origin");
return {
["Access-Control-Allow-Origin"]: origin || "*"
};
},
async invokeMethod(method, roomName, clientOptions = {}, authOptions) {
if (this.exposedMethods.indexOf(method) === -1) {
throw new ServerError(ErrorCode.MATCHMAKE_NO_HANDLER, `invalid method "${method}"`);
}
try {
return await matchMaker[method](roomName, clientOptions, authOptions);
} catch (e) {
throw new ServerError(e.code || ErrorCode.MATCHMAKE_UNHANDLED, e.message);
}
}
};
export {
controller_default as default
};