生产环境使用redis和mongodb

This commit is contained in:
zhl 2021-01-29 18:37:38 +08:00
parent d647870ce2
commit 4132663fef
3 changed files with 42 additions and 11 deletions

View File

@ -478,7 +478,7 @@ interface Array<T> {
* @returns {boolean} true
* false
*/
remove?(t: T): boolean;
removeEx?(t: T): boolean;
/**
*
@ -580,6 +580,13 @@ interface Array<T> {
* @param arr
*/
difference?<T>(arr: T[]): T[];
/**
* Map
* @param {string} key map的key字段名
* @return {Map<any, T>}
*/
toMap?<T>(key: string): Map<any, T>;
}
Object.defineProperties(Array.prototype, {
@ -614,7 +621,7 @@ Object.defineProperties(Array.prototype, {
},
writable: true
},
remove: {
removeEx: {
value: function <T>(this: T[], t: T) {
let idx = this.indexOf(t);
if (~idx) {
@ -858,6 +865,18 @@ Object.defineProperties(Array.prototype, {
return [...set1];
},
writable: true
},
toMap: {
value: function<T> (this: T[], key: string) {
let result: Map<any, T> = new Map()
for(const o of this) {
// @ts-ignore
result.set(o[key], o)
}
return result
},
writable: true
}
});

View File

@ -1,7 +1,7 @@
import http from "http";
import express from "express";
import cors from "cors";
import {Server} from "colyseus";
import { RedisPresence, Server } from 'colyseus'
import {monitor} from "@colyseus/monitor";
import rateLimit from "express-rate-limit";
// import socialRoutes from "@colyseus/social/express"
@ -9,15 +9,16 @@ import {GeneralRoom} from "./rooms/GeneralRoom";
import {initData} from "./common/GConfig";
import {Config} from "./cfg/Config";
import {RankedLobbyRoom} from "./rooms/RankedLobbyRoom";
import { MongooseDriver } from 'colyseus/lib/matchmaker/drivers/MongooseDriver'
require('./rooms/MSender');
require('./rooms/RoomExtMethod');
require('./common/Extend');
const isProd = process.env.NODE_ENV === 'production'
let config: Config = require('../config/config.json');
const port = Number(process.env.PORT || 2567);
// const port = Number(process.env.PORT) + Number(process.env.NODE_APP_INSTANCE);
const app = express()
@ -25,11 +26,22 @@ app.use(cors());
app.use(express.json())
initData();
const server = http.createServer(app);
const gameServer = new Server({
server,
// driver: new MongooseDriver(config.mongodb),
// presence: new RedisPresence({url: config.redis}),
});
let port
let gameServer
if (isProd) {
port = Number(process.env.PORT) + Number(process.env.NODE_APP_INSTANCE);
gameServer = new Server({
server,
driver: new MongooseDriver(config.mongodb),
presence: new RedisPresence({url: config.redis}),
});
} else {
port = Number(process.env.PORT || 2567);
gameServer = new Server({
server,
});
}
// register your room handlers
gameServer.define('general_room', GeneralRoom);

View File

@ -439,7 +439,7 @@ export class RankedLobbyRoom extends Room {
let data = [...stat.clients.values()][0]
stat.rank = data.options.rank
} else {
this.stats.remove(stat)
this.stats.removeEx(stat)
}
}