UNPKG

@colyseus/core

Version:

Multiplayer Framework for Node.js.

51 lines (50 loc) 1.8 kB
// 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 };